簡體   English   中英

防止線程終止影響C中的父進程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM