并发编程: c++11 thread(Func, Args...)利用类成员函数创建线程
c++11是VS2012后支持的新标准,为并发编程提供了方便的std::thread。
使用示例:
#include <thread>
void thread_func(int arg1, int arg2, float* arg3){
arg3 = (arg1*1.0)/(arg1 + arg2);
cout << "arg1 / (arg1 + arg2) = " << arg3 << endl;
return;
}
void main(){
//线程数
int threadNum =
//动态分配
thread* t;
t = new thread[threadNum];
//结果
float *result = (float *)malloc(threadNum*sizeof(float));
for ( int i = ; i < threadNum; i++){
t[i] = thread(thread_func, i, i, &result[i]);
}
for ( int i = ; i < threadNum; i++){
//t[i].detach(); //主进程不等子进程运行完
t[i].join(); //主进程等
}
//post-processing towards result...
}
当需要利用类成员函数( MyClass::thread_func )来创建子线程时,需如下码码:
t[i] = thread(std::mem_fn(&MyClass::thread_func), Object, args..);
如果thread_func为static,则不用写object。否则需要,如主进程所调函数也为该类成员,则传入this指回自己。
并发编程: c++11 thread(Func, Args...)利用类成员函数创建线程的更多相关文章
- 【Java并发编程】11、volatile的使用及其原理
一.volatile的作用 在<Java并发编程:核心理论>一文中,我们已经提到过可见性.有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果 ...
- 【并发编程】关于Thread类的详细介绍
多线程编程基础--Thread类 Thread类是Java中实现多线程编程的基础类.本篇博客就来介绍下Thread类的常用API和常见用法. Thread类常用的方法如下: Thread.active ...
- 并发编程大师系列之:Synchronized的类锁和对象锁
说到并发编程,感觉跟大多数人一样,谈之色变,说它简单把,其实很有内容,说难吧,用起来也挺容易,最近我硬着头皮,决心要把并发编程好好的搞一遍.以前,面试的时候,面试官问,并发编程会吗?嗯,接触过,就加一 ...
- 11、C++之const类成员变量,const成员函数
//转载 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 cons ...
- C++ 11 智能指针(shared_ptr)类成员函数详解
C++ 11 模板库的 <memory> 头文件中定义的智能指针,即 shared_ptr 模板类,用来管理指针的存储,提供有限的内存回收函数,可同时与其他对象共享该管理功能. share ...
- 【高并发】通过源码深度解析ThreadPoolExecutor类是如何保证线程池正确运行的
大家好,我是冰河~~ 对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢? ThreadPoolExecutor类中的重要属性 在T ...
- 【Java并发编程】5、java中ConcurrentLinkedQueue类
一.类结构: java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java. ...
- Java并发编程阅读笔记-同步容器、工具类整理
- 【Windows核心编程】重载类成员函数new / new[] / delete / delete[]
// Heap.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> #include &l ...
随机推荐
- ChartConlrol二维图表类型
WinForms Controls >Controls > Chart Control > Concepts > Creating Charts > 2D Chart T ...
- vs2010安装svn插件
vs2010安装svn插件及简单使用 1.下载安装程序,安装 2.配置vs2010 3.check out工程 1.下载安装程序,安装 2.配置vs2010 3.check out工程 Open th ...
- ASPNET程序中常用的三十三种代码
1. 打开新的窗口并传送参数 response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.S ...
- chrome调试工具常用功能整理(转)
Elements chrome devtools 中 Elements panel 是审查 dom 元素和 css 的, 可以实时修改 dom/css. windows: ctrl + shift + ...
- SVG彩虹字
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Nodejs随笔(三):全局对象之global
首先,进入node REPL: mesogene@mesogene-team:~$ node > 查看global对象,发现其他全局对象(包括Buffer.require对象)以及全局方法都包含 ...
- tcp窗口滑动以及拥塞控制
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
- Eclipse选中变量名,相同变量都变色显示 的设置
ava文件的设置"Window"-"preferences"-"Java"-"Editor"-"Mark Oc ...
- MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具
MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL Workbench设计和创建新的数据库 ...
- c语言 文件写入和读取
#include<stdio.h> #include<stdlib.h> #include<string.h> #define N 10 struct studen ...