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

标签 c multithreading segmentation-fault pthreads terminate

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

根据我的研究,我发现如果一个线程遇到未定义的行为并被终止(即使用 SIGSEGV),那么整个进程都会退出——这显然是不可取的。

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

最佳答案

如果我错了请纠正我。如果你想要基于时间的任务,我强烈建议你尝试使用信号量来控制线程。

像这样的 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/

相关文章:

java - 当指定多个条件锁定时会出现死锁

multithreading - libevent/epoll工作线程数?

C 编程段错误 : 11 Thread issues

将 long 转换为 (void *) 以传递

c++ - 如何加快 float 到整数的转换?

c - 通过唯一 ID 查找 glade gtk3 小部件

c++ - 如何将输出发送到 stdout 到字符串

mysql - 单消费者-多线程 vs 多消费者

c++ - Eigen 库的段错误 (3.3.4)

c++ - 检测栈满