Can*_*pus 4 windows winapi multithreading
我正在浏览遗留代码,发现代码使用SuspendThread函数来暂停工作线程的执行.只要工作线程需要处理请求,调用线程就会恢复此工作线程.任务完成后,线程将自行挂起.
我不知道为什么这样做.根据我的说法,可以使用WaitForSingleObject API的Event对象更优雅地完成它.
我的问题是,与使线程等待同步对象相比,暂停线程有什么好处(如果有的话)?在哪种情况下,您更喜欢SuspendThread,ResumeThread API?
Kev*_*ose 11
没有.
在我曾经工作的每个环境中都不鼓励挂起一个线程.主要关注的是线程可能会在某个资源上锁定时被挂起,可能导致死锁.根据同步对象保存的任何资源都不值得死锁风险.
当一个线程等待时,这不是一个问题,因为线程固有地控制它自己的"暂停"并且可以确保释放它所持有的任何锁.
如果您阅读有关SuspendThread的文档,您将看到它适用于调试器.如果可以,请将其从任何应用程序代码中删除.
为了说明我的观点,我遇到了一个"不使用"暂停方法的列表:
作为旁白; 我真的很惊讶.NET中的Thread.Suspend在1.0/1.1中被"支持",它应该从一开始就是值得警告的.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |