gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:17 26 4
gpt4 key购买 nike

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

根据我的研究,我发现如果一个线程遇到未定义的行为并被终止(即使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com