创建可挂起/可恢复线程的最佳方法是什么

时间:2011-11-13 06:31:41

标签: c++ windows multithreading

我正在为微处理器做一些网络编程,它发送低缓冲通知,我有一个写一定数量信息的线程。完成后,需要进入暂停状态并等待低缓冲区通知恢复。

使用windows的线程池api或使用CreateThread()创建的线程是否更好?

3 个答案:

答案 0 :(得分:4)

当您的线程需要等待时,它应该开始等待事件。这会自动挂起线程。

Windows为此提供了WaitForMultipleObjects和WaitForSingleObject函数。 Linux使用条件变量或信号量。

答案 1 :(得分:0)

创建可挂起线程的最佳方法是:

std::thread thread(function, arguments);

如果您希望稍后暂停执行该帖子,可以使用wait()std::condition_variable的{​​{1}}成员。

答案 2 :(得分:0)

最好使用CreateThread创建的单线程。 ThreadPool线程用于执行简单任务然后返回池,它们不适用于长时间运行的任务,等待或I / O操作。这是因为它们的数量有限,一旦你有一个正在运行和等待,你就不能在其他地方使用它。

此外,ThreadPool线程由系统管理,并不意味着可以从外部识别。你最好使用经典的Threads。