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

没啥好讲的  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
请按任意键继续. . .

 

posted on 2015-06-07 21:11  itdef  阅读(379)  评论(0编辑  收藏  举报

导航