我希望能够切换目标胎面以加入。 假设t1等待t2。 t2还没有退出,但现在我想让t1等待t3。 有没有办法做到这一点?感谢。
答案 0 :(得分:3)
听起来你想要不可携带的pthread_timedjoin_np
。
答案 1 :(得分:0)
你不能让t1等待t3,因为没有办法在保持运行的同时中断pthread_join,但你可以用pthread_cancel取消t1,这将终止它,因此你将不再等待t2完成,并得到一个不同的线程等待t3。
答案 2 :(得分:0)
我相信这是不可能的。但您可以按照pthread_join()
说明中的建议进行操作。
pthread_join()函数是一个 已被证明有用的便利性 多线程应用程序。它是 确实,程序员可以模拟 如果没有提供此功能 通过额外的国家作为一部分 start_routine()的参数。该 终止线程会设置一个标志 表示终止和广播 作为该州一部分的条件; 一个加入的线程会等待 条件变量。
答案 3 :(得分:0)
我认为你应该在t1和t2之间使用一个条件变量。然后你可以把t3加到t1。
答案 4 :(得分:0)
轻松模仿pthread_timedjoin_np
便携式:
pthread_join
,并将其传递给条件变量或信号量。pthread_cancel
。pthread_join
。当然我已经留下了一些细节,但是很容易填写。