gpt4 book ai didi

c++ - POSIX pthread 多次使用同一个线程

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:12 25 4
gpt4 key购买 nike

我认为,我目前正在处理的是一个相当简单的问题,我似乎无法解决。

我的程序中有两个线程。线程运行得很好,但正是其中一个线程的重用导致了问题。伪代码如下:

main() {

create thread 1;
create thread 2;

join thread 1;

}

thread 1 {
while true
if(some condition)
join thread 2
// Use the returned value from thread 2

}

thread 2 {
while true
if(some condition)
// do something
exit thread 2(with some return value to thread 1).
}

因此,当线程 1 中满足某些条件时,我希望它终止线程 2 直到它完成,这工作得很好。线程 2 达到 is 条件并退出线程。但是,当我回到线程 1 的 while 循环中,并再次达到条件时,我希望它再次重新运行线程 2。这就是导致问题的原因。线程2执行一次后,线程1忽略我的join语句,只是在while循环中轮询,成为唯一运行的线程。

所以我的问题是。如何重用 join thread 2 属性,让程序连续运行?

最佳答案

After executing thread 2 once, thread 1 ignores my join statement, and just polls in the while loop, being the only thread running.

请注意,在您的情况下,pthread_join() 很可能会在第 2 次失败并出现错误。检查它的返回值。

但是,由于你的线程2已经退出,所以没有线程等待。您必须再次启动线程 2。即:

thread 1 {
while true
if(some condition)
join thread 2
// Use the returned value from thread 2
create thread 2;
}

关于c++ - POSIX pthread 多次使用同一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19247559/

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