我知道在我們需要使用gdk_threads_enter和gdk_threads_leave之前,現在這個函數已經被棄用了,我對線程感到困惑。GTK 3線程管理
我應該只是用g_idle_add添加線程,就是這樣嗎?
我知道在我們需要使用gdk_threads_enter和gdk_threads_leave之前,現在這個函數已經被棄用了,我對線程感到困惑。GTK 3線程管理
我應該只是用g_idle_add添加線程,就是這樣嗎?
使用g_thread_new (name, func, data)
對於工人是無關的UI的東西,使用GThread
API,任何東西UI相關的,你有使用g_idle_add
/g_timeout_add
或附加定製GSource
到所需的事件循環。 在某些情況下,您希望將這些組合起來 - 在GThread
中執行一些工作,並在工作人員完成後立即通知用戶界面 - 通過g_idle_add
。
如果您正在開發一個庫,您還可以通過GAsyncInitableIface
以非常乾淨和可取消的方式實現它(儘管在開始實際實施前需要多讀一點)。
在迴應@ ptomato的評論:
你應該使用,因爲庫gdk_threads_add_idle()和gdk_threads_add_timeout() 代替g_idle_add()和g_timeout_add()不 在你的控制可能會使用已棄用的GDK鎖定機制。如果 確保應用程序和庫中的代碼都不使用已棄用的gdk_threads_enter()或gdk_threads_leave()方法,則可以安全地使用g_idle_add()和g_timeout_add()。
更具體的你想要達到什麼。 – drahnr