GTK多執行緒介面更新(續

2021-09-24 11:00:46 字數 1155 閱讀 6131

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...