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

keenleung 2006-08-07 02:44:03
1、不用google、baidu等search
2、不写程序试验
...全文
172 点赞 收藏 5
写回复
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
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告