[英]pthreads: perform function on main thread
我正在尋找可可的類似物
-[NSObject performSelectorOnMainThread: withObject: waitUntilDone:]
方法。
所以基本上我有一個 function 在一個單獨的線程上做一些工作,但它必須執行一些需要在主線程上執行的同步調用。
在 cocoa 中,消息被添加到運行循環中,作為其迭代的一部分被清除。
模擬這個:
計時器將是一個不錯的補充
要專門使用 pthread 接口完成類似的事情,首先要閱讀條件pthread_cond_t
。
我知道您要完成的工作沒有具有 1-1 關系的 pthread 接口。 條件也可以在沒有運行循環的情況下運行,因此如果您不重用運行循環實現,您可能需要將其帶到桌面上。 如果您使用運行循環,那么您只需要一個鎖即可將消息添加到具有運行循環的線程。
pthreads 是一個非常低級的抽象,因此使用原始 pthreads 沒有簡單的方法來做到這一點。 通常,您需要寫入文件描述符以喚醒主線程上的事件循環,然后將指針傳遞給您要運行的 function。 您甚至可以將指針值寫入pipe()
,然后讓主線程執行它們。
要同步等待,您可以簡單地使用互斥鎖和條件變量,以及這些執行請求對象上的完成標志。 讓子線程等待 mutex/condvar/completion 標志,然后在主線程中(在 mutex 下)設置標志並向 cvar 發出信號。 請求結構的清理將在孩子中完成。
更具體地說,如果您能提及您在主線程上運行的事件循環,將會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.