Qt基础篇:Qt线程池QThreadPool案例

一、线程池介绍

  线程池是一种线程使用模式,它管理着一组可重用的线程,可以处理分配过来的可并发执行的任务。线程池设有最大线程数,可以避免线程数过多会导致额外的线程切换开销。线程池管理的线程具有可重用性,可以减少创建和销毁线程的次数。它的主要目的是减少程序员编写的重复代码,提高程序的效率和性能,在高并发的项目中会用到,比如node.js有很多异步操作,底层就是用线程池来处理的。Qt提供了线程池类QThreadPool,可以帮助减少使用线程的程序中的线程创建成本。每个Qt应用程序都有一个全局QThreadPool对象,可以通过调用globalInstance()来访问该对象。创建一个QRunable的子类并且实现run()虚函数,然后将这个子类的对象传递到QThreadPool的start()方法,让线程池执行任务。

二、UI多线程案例

2.1、案例介绍

  利用五个线程来控制5个进度条,并引入线程池QThreadPool来管理这5个线程,线程池设定线程数为3,由线程池来分配管理5个线程。

2.2、程序效果

Qt基础篇:Qt线程池QThreadPool案例_第1张图片
Qt基础篇:Qt线程池QThreadPool案例_第2张图片

2.3、程序源码

  1、可以看到主线程做循环有时候会卡到进度条显示上,虽然Qt做了相应的事件制度,但偶尔

你可能感兴趣的:(QT实战,qt,线程池QThreadPool)