创build暂停/可恢复线程的最佳方法是什么?

我正在做一些networking编程的微处理器发送低缓冲区通知,我有一个线程,写一个设置的信息量。 完成后,需要进入挂起状态并等待低缓冲区通知恢复。

使用Windows的线程池API,还是使用CreateThread()创build的线程更好?

Solutions Collecting From Web of "创build暂停/可恢复线程的最佳方法是什么?"

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

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

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

 std::thread thread(function, arguments); 

当你想在稍后阶段暂停执行该线程时,可以使用std::condition_variablestd::condition_variable_anywait()成员。

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

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