可以在A线程中创建B线程吗?
等待B线程结束后,A线程还能继续运行吗?
发布于 2015-07-07 14:42:56
如果B是A的子线程?
有一些方法可以同步线程以进行轮换。它们能否并行运行取决于使用内核线程还是用户线程。用户线程不知道不同的处理器,所以它们不能真正地“并行”运行。如果你想让线程轮流运行,你可以使用互斥/信号量/锁来同步它们。如果希望它们真正并行运行,则需要B作为A的子进程。
您还可以结束子线程/进程,在这种情况下,将调度父线程/进程。如果没有某种形式的同步,通常不可能保证调度。
发布于 2015-07-07 15:32:40
无效FuncA() {
if(ScanResultsMonitorThread == NULL) {
/* start thread A */
}}
无效FunAThread() {
while(1) {
FuncB();
}}
无效FuncB() {
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 {
}}
https://stackoverflow.com/questions/31261280
复制相似问题