当前位置:  开发笔记 > 编程语言 > 正文

将线程保持最佳状态?

如何解决《将线程保持最佳状态?》经验,为你挑选了2个好方法。

应用程序有一个辅助线程.这个线程不是一直在运行,但主进程可以经常调用它.

所以,我的问题是,在CPU性能方面哪个更优:在没有使用时挂起线程还是保持活动并使用WaitForSingleObject函数来等待来自主进程的信号?



1> Suma..:

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

也就是说,WaitForSingleObject几乎总是一个首选的解决方案,因为使用它的代码将更加"自然" - 更容易阅读,更容易正确.挂起/恢复线程可能是危险的,因为你需要非常小心,以确保你知道你暂停一个线程处于暂停它不会造成伤害的状态(想象暂停一个当前持有互斥锁的线程).



2> gabr..:

我认为Andrei不会使用Delphi来编写.NET,因此Suspend不会转换为System.Threading.Thread.Suspend而是转换为SuspendThread Win32 API.

我强烈建议不要这样做.如果您在任意时刻暂停该线程,那么您不知道将发生什么(例如,您可能在某种状态下暂停该线程,某些共享资源被阻止).如果您已经知道线程处于可挂起状态,那么只需使用WaitForSingleObject(或任何其他WaitFor调用) - 它将与挂起线程一样有效,即线程将使用零CPU时间直到它被唤醒.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有