C++ C++;pthread_t-如何在一段时间内停止pthread_t

C++ C++;pthread_t-如何在一段时间内停止pthread_t,c++,timer,pthreads,C++,Timer,Pthreads,如何在一段时间内停止pthread\u t?我的意思是不使用睡眠功能;) 海 它需要有多精确?您可以考虑在第一个线程停止时启动另一个线程。这个“新”线程运行一段特定的时间,然后重新启动第一个线程。 如果只需要停止一次,可以添加计数器 如果你反复需要这个,你也可以考虑一个周期性的时间触发的pthix.t/p> 问候,, G.如果您的线程实现库支持它,您可以使用主线程中的pthread\u suspend和pthread\u continue,或者使用任何类型的“睡眠时间计数”的另一个线程 请参阅有

如何在一段时间内停止pthread\u t?我的意思是不使用睡眠功能;)

它需要有多精确?您可以考虑在第一个线程停止时启动另一个线程。这个“新”线程运行一段特定的时间,然后重新启动第一个线程。 如果只需要停止一次,可以添加计数器

如果你反复需要这个,你也可以考虑一个周期性的时间触发的pthix.t/p> 问候,,


G.

如果您的线程实现库支持它,您可以使用主线程中的
pthread\u suspend
pthread\u continue
,或者使用任何类型的“睡眠时间计数”的另一个线程


请参阅有关正常使用的手册页。

使用
pthread\u cond\u wait
(或
pthread\u cond\u timedwait
,但可能不使用)来阻止线程。您将需要一个谓词——一个包含一个值的变量,该值指示线程应该继续还是停止。您需要一个互斥体来保护谓词和条件变量。然后,另一个线程可以通过获取互斥体、更改谓词、向条件变量发送信号并释放互斥体来解除对该线程的阻塞

然而,一般来说,你不应该这样做。如果有什么事情要做,你应该让线程来做。如果无事可做,线程应该被编码为终止或等待工作。如果您必须使用特定代码强制执行此操作,那么首先很可能是您做错了什么


线程应该被编码为完成所有并且只完成您希望它完成的任务。除非在真正不寻常的情况下,否则您不需要从外部“推送它”。

您可以等待线程句柄本身超时。。。一旦线程终止,线程句柄将发出信号,因此它将在运行时超时。

您的问题相当不具体。有一些可能的方法,但这取决于你想要实现什么。 要中断线程吗?你想让线程“阻塞”执行直到满足某个标准吗? 谁应该能够阻止你的线程?谁应该能够重新启动其操作

一些可能性包括:

  • 螺纹悬挂:

  • 同步:/


我需要任何可能性。它不在乎什么样的可能性,只是不睡觉。@TobiWeißhaar:为什么不睡觉?可能的重复请更具体地说明你试图解决的任务