【发布时间】:2011-03-22 08:30:24
【问题描述】:
我希望能够切换要加入的目标踏板。 假设 t1 等待 t2。 t2 尚未退出,但现在我希望 t1 改为等待 t3。 有没有办法做到这一点?谢谢。
【问题讨论】:
标签: c++ c multithreading pthreads posix
我希望能够切换要加入的目标踏板。 假设 t1 等待 t2。 t2 尚未退出,但现在我希望 t1 改为等待 t3。 有没有办法做到这一点?谢谢。
【问题讨论】:
标签: c++ c multithreading pthreads posix
听起来你想要非便携式pthread_timedjoin_np。
【讨论】:
您不能让 t1 等待 t3,因为无法在保持 pthread_join 运行的同时中断它,但是您可以使用 pthread_cancel 取消 t1,这将终止它,因此您将不再等待 t2 完成,并获得一个不同的线程等待 t3。
【讨论】:
我相信这是不可能的。但您可以按照pthread_join() 说明中的建议进行操作。
pthread_join() 函数是一个 已被证明有用的便利 多线程应用程序。这是 确实,程序员可以模拟 如果未提供此功能 通过传递额外的状态作为 start_routine() 的参数。这 终止线程将设置一个标志 指示终止并广播 属于该状态的条件; 加入线程会等待 条件变量。
【讨论】:
我认为您应该在 t1 和 t2 之间使用条件变量。然后您可以将 t3 连接到 t1。
【讨论】:
轻松模拟pthread_timedjoin_np 的方法:
pthread_join,并将条件变量或信号量传递给它。pthread_cancel。pthread_join。当然我遗漏了一些细节,但它们很容易填写。
【讨论】: