[英]Preventing thread termination from affecting parent process in C?
我的目標是創建一個事件處理基礎結構,該基礎結構將允許注冊回調函數以及基於時間的此類函數的調用。 此外,我計划使回調處理程序成為多線程的,因為對回調的類型沒有任何限制,因此順序體系結構可能會導致不必要的阻塞。
從我的研究中,我發現如果線程遇到未定義的行為並被終止(即使用SIGSEGV),則整個過程都會退出-這顯然是不希望的。
那么問題是,有什么選擇可以確保線程獨立性? 在這種情況下,我認為fork
不是一個可行的選擇,因為回調不是完全成熟的程序,而是執行各種基於時間的任務的簡單例程。
如果我錯了,請糾正我。如果您要執行基於時間的任務,強烈建議您嘗試使用信號量來控制線程。
阻止線程功能,例如:
while(1){
sem_wait(my_semaphore);
code_that_needs_to_be_done_in_thread;
}
當您需要完成線程中的工作時,只要有需要,就可以從代碼中發出信號:
sem_post(my_semaphore);
...
other_code;
sem_post(my_semaphore);
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.