C 如何在没有while循环的情况下使用nanomsg调查体系结构?
我正在研究C 如何在没有while循环的情况下使用nanomsg调查体系结构?,c,sockets,ipc,nanomsg,C,Sockets,Ipc,Nanomsg,我正在研究nanomsg对IPC的使用,并希望使用调查-描述的原型体系结构。在本文中,进程作为客户端和服务器运行,并交换数据。现在服务器有以下代码(也在提供的链接中列出): 由于插座类型为NN\u explorer,因此while-循环不会在NN\u recv处等待。对于客户端,套接字类型是NN\u responder等等,而客户端中的循环在NN\u recv处等待 现在,由于这个while循环连续无限地运行,CPU使用率上升到99%。你能告诉我有没有其他方法可以使用nanomsg在循环结束时尝
nanomsg
对IPC
的使用,并希望使用调查
-描述的原型体系结构。在本文中,进程作为客户端和服务器运行,并交换数据。现在服务器有以下代码(也在提供的链接中列出): 由于插座类型为
NN\u explorer
,因此while
-循环不会在NN\u recv
处等待。对于客户端,套接字类型是NN\u responder
等等,而客户端中的循环在NN\u recv
处等待
现在,由于这个while循环连续无限地运行,CPU使用率上升到99%。你能告诉我有没有其他方法可以使用nanomsg
在循环结束时尝试添加yield()调用,如果没有收到任何结果
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);
}