2015-10-27 55 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()調用,如果沒有收到任何內容。

相關問題