2015-10-27 52 views
4

我所经历的nanomsg使用率IPC,并想用SURVEY -archetype架构描述here
在这里,进程作为客户端和服务器运行并交换数据。现在服务器已经下面的代码(在所提供的链接也列):如何在没有while循环的情况下使用nanomsg调查架构?

int server (const char *url) 
{ 
    int sock = nn_socket (AF_SP, NN_SURVEYOR); 
    assert (sock >= 0); 
    assert (nn_bind (sock, url) >= 0); 
    sleep(1);            // wait for connections 
    int sz_d = strlen(DATE) + 1;       // '\0' too 
    printf ("SERVER: SENDING DATE SURVEY REQUEST\n"); 
    int bytes = nn_send (sock, DATE, sz_d, 0); 
    assert (bytes == sz_d); 
    while (1) 
    { 
     char *buf = NULL; 
     int bytes = nn_recv (sock, &buf, NN_MSG, 0); 
     if (bytes == ETIMEDOUT) break; 
     if (bytes >= 0) 
     { 
     printf ("SERVER: RECEIVED \"%s\" SURVEY RESPONSE\n", buf); 
     nn_freemsg (buf); 
     } 
    } 
    return nn_shutdown (sock, 0); 
} 

由于套接字类型为NN_SURVEYOR,将while -loop根本不nn_recv等待。对于客户端,套接字类型为NN_RESPONDENT等等,而客户端中的循环等待在nn_recv

现在,由于while循环连续无限运行,CPU使用率高达99%。您能否告诉我,是否有其他方式可以使用nanomsg来制作调查架构。

回答

1

尝试在循环结束时添加yield()调用,如果没有收到任何内容。

相关问题