gpt4 book ai didi

c++ - 是否可以在不使用 SIGHUP 的情况下立即启动 pthread?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:03 30 4
gpt4 key购买 nike

是否可以立即启动由 pthread_create 创建的线程,而无需等待 ~300us 使其启动?现在,现有代码正在通过向线程发送 SIGHUP 来“快速启动”线程,但是,副作用是如果主进程没有为 设置信号处理程序>SIGHUP,进程将退出...

我可以让它处理 SIGHUP,但是我想知道是否有比这样做更好的解决方案...

注意:问题的初始版本说“300 毫秒”,导致评论说 300 毫秒太长了。 300 微秒更合理。

最佳答案

再修修补补几个小时后,另一种存档我需要的东西的方法。顺便说一句,我尝试按照@nos 的建议使用sched_yield,但没有产生任何不同的行为。

作为更新,我想指出我正在使用的代码正在执行 do...while 循环以通过发送 来探测 pthread 是否完成SIGHUP.

我的问题的解决方案是发送自定义 sigaction,如下所示:

有一个虚拟信号处理程序:

void thread_signal_handler(int sig) { }

然后在我正在使用的库中,在发送 SIGHUP 之前:

...
struct sigaction sa;
sa.sa_handler = dummy_handler;
sa.sa_flags = 0;
sigemptyset(&sa.sa_mask);
sigaction(SIGHUP, &sa, NULL);
pthread_kill(tid, SIGHUP);
...

这样做,我的应用程序不需要处理 SIGHUP 信号。

关于c++ - 是否可以在不使用 SIGHUP 的情况下立即启动 pthread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34927896/

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