防止线程终止影响C中的父进程?

时间:2015-09-28 15:32:10

标签: c multithreading segmentation-fault pthreads terminate

我的目标是创建一个事件处理基础结构,允许注册回调函数并根据时间调用这些函数。此外,我计划使回调处理程序成为多线程,因为对回调类型没有限制,因此顺序架构可能会导致不必要的阻塞。

从我的研究中我发现,如果一个线程遇到未定义的行为并被终止(.i.e。与SIGSEGV),则整个进程退出 - 这显然是不可取的。

那么,问题是确保线程独立性的选项是什么?在这种情况下,我不认为fork是一个可行的选项,因为回调不是完全成熟的程序,而是执行各种基于时间的任务的简单例程。

1 个答案:

答案 0 :(得分:0)

Correct me if I'm wrong.. If you want time-based tasks, I highly recommend you to try semaphores to control thread.

Block thread function like :

while(1){
    sem_wait(my_semaphore);
    code_that_needs_to_be_done_in_thread;
}

when you need your work in thread to be done just signal it from code whenever you want and howmany times you want:

sem_post(my_semaphore);
...
other_code;
sem_post(my_semaphore);
...