QThread之简单并行
来源:互联网 发布:网游自动挂机软件 编辑:程序博客网 时间:2024/05/16 14:17
1.这个好理解,使用线程池来并发运行我们的任务,具体的可以看官方的doc
2.这里我们以一个不返回值的并发操作为例,如果有返回值就需要处理结果的合并计算,具体可以参考doc,这些操作随着计算机的发达,数据处理的需求其社会的需求量会更加突出,例如akka,scala以及各种云计算均使用了这个功能
3.
源码贴出:
http://download.csdn.net/detail/u013571243/9200059
4.并行的函数
void box::spin(int& data){ const int work = 1000 * 1000 * 40; volatile int v = 0; qDebug() << "iteration" << data << "start thread" << QThread::currentThreadId(); for (int j = 0; j < work; ++j)++v; qDebug() << "iteration" << data << "finish thread" << QThread::currentThreadId();}
我们在这里需要明白的是该函数是被执行了n次(数目自已设定),而每次使用
for (int j = 0; j < work; ++j)++v;
进行模拟处理数据,所以
qDebug() << "iteration" << data << "start thread" << QThread::currentThreadId();
是同一时间被执行的,然而他并不是我们实际调用spin的数目,原因刚才说过了,他是使用线程池处理我们的数据的,默认情况下是2个,也就是线程A执行该spin函数后被放回线程池中
例如我们有个任务需要分成10份额完成,利用2个线程处理,开始时Qt会去寻找目前可用的线程为2个,2个全部取出来运行其中的两个小任务,一旦其中一个任务完成则该线程被放回线程池,此时Qt被通知又有线程可以用了,Qt又会去查找是否还有任务,此时又发现还有8个任务,于是.......
0 0
- QThread之简单并行
- 线程之QThread
- QThread之调度
- QThread之创建
- QThread之Mutex
- Qt之QThread详解
- Qt之QThread
- Qt之QThread用法
- Qt之线程QThread
- QT QThread 简单实现多线程
- 简单之并行开发(完整版)
- QThread
- QThread
- QThread
- QThread
- QThread
- QThread
- QThread
- flume 1.6.0 kafka sink测试
- XML里面加空格
- Android dp 和 sp的一个小区别
- Java线程(一) 线程安全与不安全
- startActivityForResult用法详解 requestCode resultCode
- QThread之简单并行
- Mongo DB 常用操作
- eclipse中运行pig
- IoTF 只认识use-token-auth
- MFC 获得各类指针、句柄的方法
- DEV LabelControl多行显示
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- 笔记2--iOS特殊方法调用实测记录
- Android L Settings实现