qt中如何实现多线程?

Posted

tags:

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

函数A()每隔两秒执行一次,函数B()每隔三秒执行一次,函数C()每隔四秒执行一次,同时每个函数都能控制另外两个函数的开始与停止。该如何实现?
因为我是初学者,所以代码越简洁越少越好,不要出现无关代码。但讲解越详细越通俗易懂越好,最好每一行代码都解释一下。

参考技术A 你需要加深对网络编程基本概念的理解。
首先server端用于监听的是一个socket,每次有传入连接,就会有一个新的socket描述符产生,与客户端交互就是通过这个socket描述符。
如果使用 QTcpServer,你应该重写 incomingConnection() 函数,该函数可以拿到 socket 描述符,然后你使用自定义事件将这个socket描述符传递给一个线程,在这个线程中使用这个socket描述符来与客户端通信。这就是“通知+多线程”的服务器编程模型,Qt 中天生支持这种模型,很容易实现。

Qt-不调用CoInitialize-实现SDL多线程运行

使用Qt开发程序,参考的MFC的程序中有CoInitialize。结果Qt程序调用不了,导致SDL不能音视频同步。此时SDL的初始化是放在主程序里的。
把SDL的初始化部分放到了辅助线程里,运行就正常了,还不需要CoInitialize。
用SDL作音视频同步及多线程,在Qt移植太麻烦了,最后还是使用VLC,接口好用。实现多路视频同步播放没有问题。

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

Qt - 如何在不显式实现线程的情况下同时运行两个插槽

QT不同平台对线程如何支持和实现

QT不同平台对线程如何支持和实现

QT多线程问题:子线程中的变量如何传递给主线程?

Qt如何循环创建线程

QT opengl多线程实现原理