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
来制作调查架构。