2019獨角獸企業重金招聘python工程師標準》
第一,如果使用空閒函式來處理socket程式,可能會造成資料接收不及時,特別是針對一些對資料及時性要求很高的程式。因為空閒函式只會在使用者不對介面進行操作的時候(即系統空閒時)才進行。如果當前使用者正在介面上執行某項耗時的操作,而此時有資料通過socket傳送,那麼該資料會等到使用者的介面操作完成後才到達,造成了資料延時。那麼應該怎麼處理了,此時我們可以向gtk的主迴圈新增乙個需要監視的socket描述符,然後讓主迴圈對該socket進行掃瞄。這樣做的效率在我看來是比使用空閒函式高的。具體使用方法:
1.完成socket連線。
2.使用g_io_channel_unix_new()生成乙個全新的gchannel指標。注意:windows平台請使用g_io_channel_win32_new_socket()。
3.通過g_io_add_watch()將剛才的gchannel指標新增到需要檢測的佇列中。
#include #include #include #include #include #include #include #define addr "192.169.18.252"
#define port 5038
int new_message(giochannel *channel,giocondition condition,gpointer data);
int main()
/*get channel from socket*/
channel=g_io_channel_unix_new(sockfd);
/*add the channel to main loop*/
g_io_add_watch(channel,g_io_in|g_io_hup|g_io_nval|g_io_err,(giofunc)new_message,null);
/*enter the main loop*/
loop=g_main_loop_new(null,false);
g_main_loop_run(loop);
return 0;
}int new_message(giochannel *channel,giocondition condition,gpointer data)
else
}
WIN FORM 多執行緒更新UI 介面控制項
方法1,更新單個控制項 public delegate void controltextmethod control control,string text private void setcontroltext control control,string text else 需要更新控制項的te...
c 多執行緒訪問介面
c 2005後不再支援多執行緒直接訪問介面的控制項 介面建立執行緒與訪問執行緒不是同乙個執行緒 不過可以使用delegate來解決 2.定義執行緒函式 在另乙個執行緒中可以對介面控制項進讀操作 view plaincopy to clipboardprint?private void progres...
多執行緒二(Runnable介面)
建立執行緒的第二種方式 實現runable介面 步驟 1.定義類實現runnable介面。2.覆蓋runnable 中的run方法。將執行緒要執行的 存放在run方法中。3.通過thread類建立執行緒物件。4.將runnable介面的子類物件作為實際引數傳遞給thread類的建構函式。自定義的ru...