我正在为微处理器做一些网络编程,它发送低缓冲通知,我有一个写一定数量信息的线程。完成后,需要进入暂停状态并等待低缓冲区通知恢复。
使用windows的线程池api或使用CreateThread()
创建的线程是否更好?
答案 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。