|
发表于 2014-12-23 10:17:29
|
显示全部楼层
内蒙古自治区包头市
我来解释一下直接启动为什么会死锁. 这是一个很有意思的问题:
科普:主线程中包含消息循环. 消息循环是什么?消息循环就是处理消息,让窗口的控件能被操作的.
首先,点击按钮启动子程序,这时这个子程序是在程序的主线程中执行.
在子程序1中,启动了一个新的线程(子程序2),然后新线程进入了许可区,
由于全部的程序只使用了1个许可区,所以当线程(子程序2)进入许可区的时候,其他线程就要都等待.所以这时主线程等待了.
因为主线程的等待,消息循环无法执行了.而子程序2要改变控件内容,他要向主线程发送消息,但是主线程等待了.但是他非要发消息,但主线程就是等待.....如此往复.
造成了整个程序的卡死,界面无响应,代码不执行.
==============================
{:soso_e113:}好厉害的分析,我都崇拜我自己.
|
评分
-
参与人数 2 | 好评 +1 |
精币 +1 |
荣誉 +3 |
收起
理由
|
小小C
| + 1 |
+ 1 |
|
卧槽,牛逼,感谢解答 |
笨潴
| |
|
+ 3 |
热心帮助他人,荣誉+3,希望继续努力(*^__^*) 嘻嘻! |
查看全部评分
|