作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员
QRunnable 是所有 runnable 对象的基类,而 QThreadPool 类用于管理 QThreads 集合。
QRunnable 类是一个接口,用于表示一个任务或要执行的代码,需要重新实现 run() 函数。
QThreadPool 管理和循环使用单独的 QThread 对象,以帮助程序减少创建线程的成本。每个 Qt 应用程序都有一个全局 QThreadPool 对象,可以通过调用 globalInstance() 访问。
详细描述
QThreadPool 支持多次执行相同的 QRunnable,通过调用 QThreadPool::tryStart(this) 从 run() 函数内。如果启用了 autoDelete,当最后一个线程退出 run() 函数,QRunnable 将被删除。多次调用 QThreadPool::start() 使用相同的 QRunnable,当启用 autoDelete 时会创建一个竞争条件,不推荐使用。
一定时间未使用线程将会到期,默认到期超时是 30000 毫秒(30秒)。可以使用 setExpiryTimeout() 来改变,设定一个负值,则会禁用到期机制。
调用 maxThreadCount() 查询使用线程的最大数量,如果需要,可以使用 setMaxThreadCount() 进行更改。默认情况下,maxThreadCou
本文详细介绍了Qt中的QRunnable和QThreadPool。QRunnable是表示任务的接口,需要重写run()函数。QThreadPool管理线程池,支持多次执行QRunnable,但多次调用start()可能引发问题。QThreadPool的线程会根据设置自动删除或到期。基本使用包括子类化QRunnable并实现run(),然后通过QThreadPool::start()启动。文章还提到,QRunnable不支持直接的信号/槽,可以继承QObject来实现。最后,文章提到了线程的关闭和线程间通信的几种方式。
订阅专栏 解锁全文
1543

被折叠的 条评论
为什么被折叠?



