4

ここで説明されている -archetype アーキテクチャの使用を検討していて、nanomsg使用IPCしたいと考えていました。この場合、プロセスはクライアントとサーバーとして実行され、データを交換します。サーバーには次のコードがあります(提供されたリンクにもリストされています):SURVEY

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ループは で待機しませんnn_recv。クライアントの場合、ソケット タイプはNN_RESPONDENTなどであり、クライアントの while ループは で待機しnn_recvます。

この while ループは継続的かつ無限に実行されるため、CPU 使用率は 99% まで上昇します。を使用して調査アーキテクチャを作成する他の方法があることを教えてくださいnanomsg

4

1 に答える 1