• 7304阅读
  • 3回复

还是问个多线程的问题 [复制链接]

上一主题 下一主题
离线fhq1210
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-03
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
1 readthread read_thread;
2 read_thread.start();
3 read_thread.wait();
4 QMessagebox语句;

我想问问大家,主线程创建了新线程以后,是不是马上去做别的事情了呢?
就像上面这样的一个创建新线程的例子:
若果在主线程中创建了read_thread这样一个线程去执行,然后让子线程去等待自己的结束(这里read_thread.wait()是子线程自己等待还是主线程在这里等待呢?),这个过程可能很长。
那么子线程一旦开始以后,语句(4 Qmessagebox语句;)是不是和read_thread.run()同时执行的啊?也就是说,在这个例子里面read_thread.run()和主界面显示QMessagebox信息时同时出现呢?
我的情况就是,执行了语句123后,可以看到子线程启动了它的工作,但是语句4的qmessagebox一直没有出现。主界面也冻结了。感觉主线程也被阻塞了一样。(子线程里设置有有阻塞)。
离线帅坤
只看该作者 1楼 发表于: 2010-06-26
我也是这样的问题。感觉主线程和子线程不是并行执行的,主线程在等子线程执行完才会处理其他事情。
为什么没人帮忙解决一下呢!
离线dbzhang800

只看该作者 2楼 发表于: 2010-06-26
引用第1楼帅坤于2010-06-26 14:32发表的  :
我也是这样的问题。感觉主线程和子线程不是并行执行的,主线程在等子线程执行完才会处理其他事情。
为什么没人帮忙解决一下呢!


你也是像楼主这么写的?

是的话,去掉 wait 那一句。不然相当于:告诉一个朋友去做一件事,然后自己开始睡觉,直睡到朋友把事情做完
离线帅坤
只看该作者 3楼 发表于: 2010-06-27
回 2楼(dbzhang800) 的帖子
真的吗?哈哈,太谢谢你了!
等我明天去公司了,改改试试,嘿嘿~
这个问题都郁闷我快一周了。总觉得线程这个问题自己还没搞明白。
快速回复
限100 字节
 
上一个 下一个