首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程所有权

线程所有权
EN

Stack Overflow用户
提问于 2015-07-07 14:27:47
回答 2查看 516关注 0票数 1

可以在A线程中创建B线程吗?

等待B线程结束后,A线程还能继续运行吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-07 14:42:56

如果B是A的子线程?

有一些方法可以同步线程以进行轮换。它们能否并行运行取决于使用内核线程还是用户线程。用户线程不知道不同的处理器,所以它们不能真正地“并行”运行。如果你想让线程轮流运行,你可以使用互斥/信号量/锁来同步它们。如果希望它们真正并行运行,则需要B作为A的子进程。

您还可以结束子线程/进程,在这种情况下,将调度父线程/进程。如果没有某种形式的同步,通常不可能保证调度。

票数 0
EN

Stack Overflow用户

发布于 2015-07-07 15:32:40

无效FuncA() {

代码语言:javascript
复制
    if(ScanResultsMonitorThread == NULL) {
    /* start thread A */
    }

}

无效FunAThread() {

代码语言:javascript
复制
    while(1) {
        FuncB();
    }

}

无效FuncB() {

代码语言:javascript
复制
try {
    boost::this_thread::sleep(boost::posix_time::seconds(25));
}
catch(const boost::thread_interrupted&) {

}

if(needRestart){
    /* create thread B */ 
    boost::thread Restart(&FuncBThread,this);
    boost::this_thread::sleep(boost::posix_time::seconds(10));
    /* program can not run here and thread A end, why? */ 
}
else {

}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31261280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档