我的目标是创建一个事件处理基础结构,允许注册回调函数并根据时间调用这些函数。此外,我计划使回调处理程序成为多线程,因为对回调类型没有限制,因此顺序架构可能会导致不必要的阻塞。
从我的研究中我发现,如果一个线程遇到未定义的行为并被终止(.i.e。与SIGSEGV),则整个进程退出 - 这显然是不可取的。
那么,问题是确保线程独立性的选项是什么?在这种情况下,我不认为fork
是一个可行的选项,因为回调不是完全成熟的程序,而是执行各种基于时间的任务的简单例程。
答案 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);
...