gpt4 book ai didi

c++ - 关于线程的设计问题

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:07 27 4
gpt4 key购买 nike

我有 A 类和 B 类和 C 类。B类运行一个线程,C类运行n个线程。A 类应该启动线程,而不是等待来自用户的信号(比如 Linux 中的 Ctrl-c)——A 类将停止所有线程(B 类和 C 类),做一些最后的工作,应用程序将退出。

问题是:A类应该如何休眠直到收到信号?什么是最佳实现?

最佳答案

听起来像是条件变量的工作。有一个关于如何使用 pthreads 条件变量的教程 here和维基百科上的另一个here

基本方法是所有你想杀死的线程周期性地调用pthread_cond_timedwait来检查是否有信号从类A发出。

伪代码中,类 B 和 C 中的每个线程看起来都像这样

while (!pthread_cond_timedwait(/*some args (including a timeout)*/ ) {
doSomeSmallUnitOfWork;
}

然后在 A 类的信号处理程序中捕获 CTRL-C(或任何信号)

pthread_cont_signal(/*some more args*/);

关于c++ - 关于线程的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411043/

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