正文

FAQ 09:如果线程在Critical sections中停很久会怎么样?2007-12-29 18:19:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/31656.html

分享到:

FAQ 09:如果线程在Critical sections中停很久会怎么样?
    如果一直让资源被锁定,你就会阻止其他线程的执行,并把整个程序带到一个完全停止的状态。以critical section来说,当某个线程进入critical section时,该项资源即被琐定。

     我们很难定义所谓“长时间”是多长。如果你在网络上进行操作,并且是在一个拨号网络上,长时间可能是指数分钟,如果所处理的是应用程序的一项关键性资源,长时间可能是数个毫秒(milliseconds)。
     我能够给你的最牢固而立即的警告是:千万不要在一个critical section之中调用sleep()或任何wait...()API函数。
     当你以一个同步机制保护一个资源时,有一点必须记住,那就是:这项资源被使用的频率如何?线程必须多快释放这份资源,才能确保整个程序的运行很平顺?
     某些人会关心这样的问题:如果我再也不释放资源(或不离开critical section,或不释放mutex……等等),怎么样?答案是:不会怎么样!!
     OS不会当掉。用户不会获得任何错误信息。最坏的情况是,当主线程(一个GUI线程)需要使用这被锁定的资源时,程序会挂在那儿,动也不动。真的,同步机制并没有什么神奇魔法。

阅读(2978) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册