我的目标是创建一个事件处理基础架构,允许注册回调函数并根据时间调用此类函数。此外,我计划使回调处理程序成为多线程的,因为对回调的类型没有限制,因此顺序架构可能会导致不必要的阻塞。
根据我的研究,我发现如果一个线程遇到未定义的行为并被终止(即使用 SIGSEGV),那么整个进程都会退出——这显然是不可取的。
那么,问题是有哪些选项可以确保线程独立性?我不认为 fork
ing 在这种情况下是一个可行的选择,因为回调不是完全成熟的程序,而是执行各种基于时间的任务的简单例程。
最佳答案
如果我错了请纠正我。如果你想要基于时间的任务,我强烈建议你尝试使用信号量来控制线程。
像这样的 block 线程函数:
while(1){
sem_wait(my_semaphore);
code_that_needs_to_be_done_in_thread;
}
当您需要在线程中完成工作时,只需在需要时从代码中发出信号并发送多少次即可:
sem_post(my_semaphore);
...
other_code;
sem_post(my_semaphore);
...
关于c - 防止线程终止影响 C 中的父进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826692/