码迷,mamicode.com
首页 > 编程语言 > 详细

c++11多线程学习笔记之一 thread基础使用

时间:2015-06-07 21:35:04      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

没啥好讲的  c++11  thread类的基本使用

#include "stdafx.h"
#include <iostream>
#include <thread>

void Func(int n)
{
	for (int i = 0; i < 3; ++i)
		std::cout << "func " << i << std::endl;
}

void RefFunc(int& n)
{
	for (int i = 0; i < 3; ++i)
		std::cout << "ref func " << i << std::endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int n = 0;
	std::thread t1; //无显示
	std::thread t2(Func, n + 1); //调用非引用参数的函数
	t2.join();
	std::thread t3(RefFunc, std::ref(n));//调用引用参数的函数 
	std::thread t4(std::move(t3)); 
	t4.join();
	return 0;
}

代码展示了 thread类的几种用法。 传输函数合参数,带引用和不带引用两种。

其中t3使用了move将线程关联到t4 

t3不在和线程关联。涉及到的move 见以后文章

显示如下:

func 0
func 1
func 2
ref func 0
ref func 1
ref func 2
请按任意键继续. . .

 

 

还有JOIN的使用方法.如果将join的代码提前,则两个线程的信息乱序输出

int _tmain(int argc, _TCHAR* argv[])
{
int n = 0;
std::thread t1; //无显示
std::thread t2(Func, n + 1); //调用非引用参数的函数
std::thread t3(RefFunc, std::ref(n));//调用引用参数的函数 
std::thread t4(std::move(t3)); 
t2.join();
t4.join();
return 0;
}

  

显示如下:

func 0ref func 0

func 1
func 2
ref func 1
ref func 2
请按任意键继续. . .

 

c++11多线程学习笔记之一 thread基础使用

标签:

原文地址:http://www.cnblogs.com/itdef/p/4559090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!