C Programer  - 讨论区

标题:C++ 11新特性:thread

2014年01月19日 星期日 18:25

C++11标准引入了与并行计算相关的多个模块,包括thread、mutex、future、atomic等,理念非常先进,API非常容易使用。thread模块的示例代码如下:

 

#include <iostream>
#include <thread>
#include <vector>
#include <chrono>

using namespace std;
using namespace std::this_thread;

void func1(int start) {
	for(int i=start;i<start+5;i++) {
		cout << get_id() << ":" << i << endl;
		sleep_for(chrono::seconds(1));
	}
}

int main(int argc,char **argv) {

	auto n=thread::hardware_concurrency();
	cout << "hardware concurrency: " << n << endl;
	cout << "main thread id: " << get_id() << endl;
	thread d(func1,1000);
	d.detach();
	vector<thread*> threads;
	for(unsigned int i=0;i<2*n;i++) {
		threads.push_back(new thread(func1,i*10));
	}
	for(auto x : threads) {
		x->join();
	}
	sleep_for(chrono::seconds(1));
	return 0;

}

需要注意两点:

1,thread对象本身不可拷贝(copy)。

2,示例代码需要使用g++ 4.8以上版本才可正常编译运行。参考编译指令:

g++ -o threads threads.cpp -lpthread -std=c++11

参考资料:

http://www.cplusplus.com/reference/thread/thread/

http://www.cplusplus.com/reference/thread/this_thread/

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号