对阻塞中的线程调用SuspendThread,会发生什么事?

keenleung 2006-08-07 02:44:03
1、不用google、baidu等search
2、不写程序试验
...全文
286 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
keenleung 2006-08-08
  • 打赏
  • 举报
回复
楼上说的够详细,可惜分少了点,请笑纳
僵哥 2006-08-07
  • 打赏
  • 举报
回复
另外还有个问题,就是如果在内部有分配相当的资源的话,如果被Suspend的时间比较长,则该部分资源将会被从物理内存转移到磁盘缓冲区当中,从而使得再次被唤醒之后,到进入正常工作状态,需要相当的时间,特别是Low Memory状态下.
僵哥 2006-08-07
  • 打赏
  • 举报
回复
阻塞,通常是由于等待外部消息或事件,比如IO的完成等.
而如果你把正在阻塞的线程Suspend掉,则当消息或事件得以通知时,将被会被阻塞.直到该线程被再次唤醒之后,才会继续对相应的消息或事件进行处理.如此可能带出来的问题是等待它的消息或事件的线程或事务也将被挂起.以后部分时效性(通常以时间单位衡量)的任务得不到继续,甚至是出现异常.比如IO或事件等待超时等(通常等待消息的可能性比较少,除极特殊情况外,大部分时间里对消息都仅只是检索).
DentistryDoctor 2006-08-07
  • 打赏
  • 举报
回复
SuspendThread vs ResumeThread
robin_yao 2006-08-07
  • 打赏
  • 举报
回复
个人认为:
如果你不ResumeThread的话,那么这个thread一直挂起在那边(即使它已经过了阻塞时间了)
因为Each thread has a suspend count ,Calling SuspendThread causes the target thread's suspend count to be incremented。
所以一个SuspendThread对应一个ResumeThread

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧