C++并发编程超简单示例
来源:互联网 发布:数据库查看器 编辑:程序博客网 时间:2024/04/29 09:59
C++下的并行编程,按照我的理解:
1. 写好一个待并行计算的函数f1();
2. thread t(f1), 并行开始;
3. f2 放在主函数中,即可实现f1和f2的并行运行;
thread t(f1);// 并行开始f2();t.join();// 并行结束
记得开头
#include <thread>
并行示例
// MultiThread.cpp : 并行测试程序//#include "stdafx.h"#include <stdlib.h>#include <iostream>#include <thread>#include <time.h>using namespace std;int N = 10;void thread_task() //用于比较的函数{ long int sum2 = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) sum2 += (i + j); cout << "thread1: " << i << endl; } cout << "sum2: " << sum2 << endl;}int main(){ long int sum1 = 0; int j = 0; clock_t clockBegin, clockEnd; clockBegin = clock(); // 计时开始 thread t(thread_task);// 并行开始 //thread_task(); //串行开始 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) sum1 += (i + j); cout << "thread2: " << i << endl; } t.join();// 并行结束 cout << "sum1: " << sum1 << endl; clockEnd = clock(); // 计时结束 cout << "time is " << (clockEnd - clockBegin) << " ms" << endl; system("pause"); return 0;}
并行结果:可见线程1、2是不分顺序进行的,很好的体现了并行特性。
串行与并行耗时计算
// MultiThread.cpp : 并行计时程序#include "stdafx.h"#include <stdlib.h>#include <iostream>#include <thread>#include <time.h>using namespace std;int N = 10000;void thread_task() //用于比较的函数{ long int sum2 = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) sum2 += (i + j); //cout << "thread1: " << i << endl; } cout << "sum2: " << sum2 << endl;}int main(){ long int sum1 = 0; int j = 0; clock_t clockBegin, clockEnd; clockBegin = clock(); // 计时开始 thread t(thread_task);// 并行开始 //thread_task(); //串行开始 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) sum1 += (i + j); //cout << "thread2: " << i << endl; } t.join();// 并行结束 cout << "sum1: " << sum1 << endl; clockEnd = clock(); // 计时结束 cout << "cocurrent cal time is " << (clockEnd - clockBegin) << " ms" << endl; system("pause"); return 0;}
// MultiThread.cpp : 串行计时程序#include "stdafx.h"#include <stdlib.h>#include <iostream>#include <thread>#include <time.h>using namespace std;int N = 10000;void thread_task() //用于比较的函数{ long int sum2 = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) sum2 += (i + j); //cout << "thread1: " << i << endl; } cout << "sum2: " << sum2 << endl;}int main(){ long int sum1 = 0; int j = 0; clock_t clockBegin, clockEnd; clockBegin = clock(); // 计时开始 //thread t(thread_task);// 并行开始 thread_task(); //串行开始 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) sum1 += (i + j); //cout << "thread2: " << i << endl; } //t.join();// 并行结束 cout << "sum1: " << sum1 << endl; clockEnd = clock(); // 计时结束 cout << "serial computing time is " << (clockEnd - clockBegin) << " ms" << endl; system("pause"); return 0;}
0 0
- C++并发编程超简单示例
- CSAPP 并发编程示例
- Java 多线程 并发编程------超全面
- linux C语言Socket编程实现原理及简单示例
- jQuery 全选 反选 超简单示例
- 一个超简单的闭包示例
- 动态编程简单示例
- 网络编程简单示例
- socket编程简单示例
- 【C++】并发编程入门
- C++并发编程
- Scala基础—并发编程示例
- Java简单实现并发编程
- java并发编程简单分析
- 并发编程知识点简单记录
- obj-c利用dispatch库并发示例
- PHP Socket 编程-简单示例
- PHP Socket 编程-简单示例
- golang使用protobuf
- Ionic学习--2.CSS组件
- 快速排序
- Linux下python2.7安装pip
- 怎么读官方文档
- C++并发编程超简单示例
- Android 判断手机是否安装QQ或者微信
- jdk,Python,Scala,hadoop,mysql,spark安装
- java位运算符
- serialVersionUID作用
- Web测试关注点
- 归并排序算法
- [转]Python多线程学习
- 缓存的力量