C++ pthreads join-如何取消另一个线程的连接
我希望能够切换要加入的目标踏板。 假设t1等待t2。t2尚未退出,但现在我希望t1等待t3。C++ pthreads join-如何取消另一个线程的连接,c++,c,multithreading,pthreads,posix,C++,C,Multithreading,Pthreads,Posix,我希望能够切换要加入的目标踏板。 假设t1等待t2。t2尚未退出,但现在我希望t1等待t3。 有办法吗?谢谢。您不能让t1等待t3,因为在保持运行的同时无法中断pthread_join,但是您可以使用pthread_cancel取消t1,这将终止它,因此您将不再等待t2完成,而让另一个线程等待t3。我相信这是不可能的。但是您可以按照pthread\u join()说明中的建议进行操作 pthread_join()函数是一个 已证明在应用程序中非常有用的便利性 多线程应用程序。它是 是的,程序员可
有办法吗?谢谢。您不能让t1等待t3,因为在保持运行的同时无法中断pthread_join,但是您可以使用pthread_cancel取消t1,这将终止它,因此您将不再等待t2完成,而让另一个线程等待t3。我相信这是不可能的。但是您可以按照
pthread\u join()
说明中的建议进行操作
pthread_join()函数是一个
已证明在应用程序中非常有用的便利性
多线程应用程序。它是
是的,程序员可以模拟
如果未提供此功能,请执行此操作
通过将额外状态作为
start_例程()的参数。这个
终止线程会将标志设置为
指示终止并广播一条消息
属于该状态一部分的状态;
一个连接线程将在上面等待
条件变量
听起来你想要的是不可移植的。我认为你应该在t1和t2之间使用一个条件变量。然后你可以将t3连接到t1。模拟
pthread\u timedjoin\u np
可移植的简单方法:
pthread_join
,并向其传递一个条件变量或信号量pthread\u cancel
pthread\u join