Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ winapi:自挂起线程或创建新线程_C++_Multithreading_Winapi_Suspend - Fatal编程技术网

C++ winapi:自挂起线程或创建新线程

C++ winapi:自挂起线程或创建新线程,c++,multithreading,winapi,suspend,C++,Multithreading,Winapi,Suspend,我正在开发一个windows应用程序,它在不阻塞GUI的情况下每秒循环执行两次任务。我实现了一个计时器,在每次WM_计时器执行时创建两个新线程,这些线程被执行并在完成后返回 在阅读一些文档时,我发现了线程可以挂起和恢复这一事实。出于这个原因,我想知道是否只有两个线程是更好的方法:在每个线程中,一个周期可以执行请求的任务好几次,但是从一个周期到另一个周期,线程会挂起自己。计时器可用于每次恢复线程工作。事件可以通知线程何时终止 哪种方法最可靠、最正确 谢谢大家! 要澄清的是,第二种方法允许不连续地创

我正在开发一个windows应用程序,它在不阻塞GUI的情况下每秒循环执行两次任务。我实现了一个计时器,在每次WM_计时器执行时创建两个新线程,这些线程被执行并在完成后返回

在阅读一些文档时,我发现了线程可以挂起和恢复这一事实。出于这个原因,我想知道是否只有两个线程是更好的方法:在每个线程中,一个周期可以执行请求的任务好几次,但是从一个周期到另一个周期,线程会挂起自己。计时器可用于每次恢复线程工作。事件可以通知线程何时终止

哪种方法最可靠、最正确


谢谢大家!

要澄清的是,第二种方法允许不连续地创建和销毁线程,而只适用于两个固定线程。创建和销毁线程的成本很高。因此,从表面上看,我会错误地保留线程,并让它们在需要时阻塞。Suspend/ResumeThread是调试器的函数,永远不要在自己的代码中使用它。使用WaitForSingleObject挂起线程。您可能应该在这里使用CreateTimerQueueTimer,它的回调自动在线程池线程上运行。谢谢,TimerQueue似乎是解决我问题的正确方法!