windows - 搁置线程是最优的吗?

标签 windows multithreading delphi winapi

应用程序有一个辅助线程。这个线程并不意味着一直运行,但主进程可以经常调用它。

所以,我的问题是,就 CPU 性能而言,什么是更优化的:在线程未被使用时挂起线程或保持线程事件并使用 WaitForSingleObject 函数以等待来自主进程的信号?

最佳答案

就使用的 CPU 资源而言,两种解决方案是相同的 - 挂起的线程和在 WaitForSingleObject 中等待未发出信号的对象的线程都根本没有 CPU 周期。

也就是说,WaitForSingleObject 几乎总是一个首选的解决方案,因为使用它的代码会更加“自然”——更容易阅读,也更容易正确。挂起/恢复线程可能很危险,因为您需要格外小心以确保您知道您正在挂起一个线程,该状态下挂起它不会造成任何伤害(想象一下挂起一个当前持有互斥锁的线程)。

关于windows - 搁置线程是最优的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/131818/

相关文章:

c - 为什么我无法使用 Visual Studio 2015 RC 命令行工具构建 Vim?

windows - findstr命令变量在for循环批处理脚本中的路径中扩展(Windows,批处理脚本)

python - 当一个线程需要来自其他线程之一的结果时如何运行多个线程

delphi - 阻止 IDE 自动添加使用单位

android - 确定定位服务是否开启

.net - 从哪里获取 Microsoft.GroupPolicy.Management.dll?

c++ - 直接显示 ISampleGrabber : samples are upside-down and color channels reverse

c - 与 Pthread 共享有界缓冲区和互斥锁忙等待

c# - 如何在 C# 中向线程添加函数?

Delphi winsock为什么在分配InAddr.S_addr时sockaddr_in值得到 "garbled"