qt如何解决线程空转的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt如何解决线程空转的问题相关的知识,希望对你有一定的参考价值。

参考技术A 创建3个线程,1个线程发送,一个线程接收,一个线程监控链接是否断开。
connect成功后,在run函数中写直接用send函数发送就是了。监控线程需要跟发送线程和接收线程通信,因为如果你在监控线程中直接使用发送套接字或者接收套接字,就需要做线程同步,容易出问题。当发送线程发送失败后,给监控线程发信号,监控线程再去处理。同理,接收线程一样的方式。
qt编程是一个由QtCompany于1991年开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。qt是面向对象的框架,使用特殊的代码生成扩展称为元对象编译器MetaObjectCompiler,moc,以及一些宏。

qt多线程的问题

我子线程中run函数当中有一个while循环,现在我想在主线程中点击某一个按钮使while循环停止。循环条件就是flag==true循环,请问如何使子线程和主线程都可以操作同一个变量

QMutex mutex;
mutex. lock ();
global::threadflag = true;//将全局变量变为true
mutex.unlock();

有可能确实是return的太快了,子线程还没来得及去结束,主进程已经return。加sleep试试。加个log看看这个showrelayThread->terminate();这句话有没有执行啊。
参考技术A 直接用一个静态的变量可以?

以上是关于qt如何解决线程空转的问题的主要内容,如果未能解决你的问题,请参考以下文章

初学QT QPixmap:It is not safe to use Pixmaps outside the GUI thread 报错如上 如何解决 拜托高手指教

如何在linux中增加QT Gui线程优先级[重复]

Qt中的全局变量声明

qt多线程的问题

Qt:如何执行超时函数

使用静态 QT odbc 时如何解决链接问题