• 3276阅读
  • 14回复

qt  线程间切换 [复制链接]

上一主题 下一主题
离线feiyang0725
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-08
程序一运行就执行线程,循环调用。如果主界面有操作的时候希望从线程能暂停,先执行主界面的操作,然后继续运行从线程
离线feiyang0725

只看该作者 1楼 发表于: 2013-04-08
主要是要求在主线程处理的时候从线程立即进入等待,知道主线程处理完成,从线程才继续处理
离线ffii4455

只看该作者 2楼 发表于: 2013-04-08
线程同步与互斥么?百度上一搜一堆
离线feiyang0725

只看该作者 3楼 发表于: 2013-04-09
现在是有一个类,只支持一个线程访问,从线程不停操作这个类中的一个方法去完成某个功能,当主线程要对这个类进行操作时,从线程必须停止,等主线程完成操作,从线程再继续运行。主线程是界面操作,什么时候操作,操作那些方法都是不确定的。
这个类不支持重入。。
线程间互斥只能对某个方法,而不是整个类。。
离线feiyang0725

只看该作者 4楼 发表于: 2013-04-09
就和中断一样,主线程只要一操作,就只执行主线程对这个类的操作,别的操作全部停止,直到主线程完成操作。。
类似中断的机制,QT有这种方式吗?
离线feiyang0725

只看该作者 5楼 发表于: 2013-04-09
QT有没有一个事件轮询的机制,就是将要处理的事件放在一个列队里面,程序一直轮询这个列队里面的事件进行执行。可以向这个列队里面添加删除任务。。。?
离线jdwx

只看该作者 6楼 发表于: 2013-04-09
回 5楼(feiyang0725) 的帖子
简单点说,自己定义一些事件,把这些事件放进QList里,线程从QList的head取出来一个事件处理,完成后再去取下一个事件。
其实你只要求一个线程和主界面互动,用QMutex互斥就足够了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线feiyang0725

只看该作者 7楼 发表于: 2013-04-09
回 6楼(jdwx) 的帖子
主要是从线程和主界面的操作都是对一个类的,只是调用的方法不同,但是这个类不支持重入。必须在主界面操作的时候,让从线程停止操作否则会阻塞。我看互斥只是对一个类中的某个方法进行互斥,但是我要求的的整个类。。。
离线feiyang0725

只看该作者 8楼 发表于: 2013-04-09
其实最麻烦的是,从线程是一个while(1)循环调用的。。。
离线feiyang0725

只看该作者 9楼 发表于: 2013-04-11
其实我只是想要将一个类不能重入,就是一次只能有一个线程来调用。当然主线程优先级最高。。
请问有没有什么好点的思路啊。。?
离线feiyang0725

只看该作者 10楼 发表于: 2013-04-12
自己顶,这个问题我已解决但是方法并不好,我还是希望能够用到线程互斥将我的整个类锁起来。。期望哪位高人能告诉我。。
离线feiyang0725

只看该作者 11楼 发表于: 2013-04-15
求助啊。。
离线benbenmajia

只看该作者 12楼 发表于: 2013-04-15
while(1)  while(bool)
通过实践控制bool变量,完成子线程的退出和开启
安然.....
离线feiyang0725

只看该作者 13楼 发表于: 2013-04-15
回 12楼(benbenmajia) 的帖子
这个问题我已解决采用 的这种方式,每次改变布尔值再起启动线程。现在就是想采用更好的办法,因为这个类是互斥的,一次只能有一个地方调用,能不能让这个类自己分个优先级,或类似中断的形式,有什么操作就中断此时操作,完成后再继续之前未完成操作。让这个变成这个类的自带属性,或者方法。。。
离线jdwx

只看该作者 14楼 发表于: 2013-04-15
回 13楼(feiyang0725) 的帖子
例如一个线程类的功能是copy大量的文件,想要停下这个copy过程,之后还能继续完成剩下的任务,需要把停下的信息储存起来,之后再恢复。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个