c++11线程管理,RAII方式等待异常环境下线程结束

原创 2015年11月21日 16:33:10

直接上代码

class thread_guard
{
private:
	std::thread& t;
public:
	explicit thread_guard(std::thread& _t):t(_t){}
	~thread_guard()
	{
		if(t.joinable())
			t.join();
	}
private:
	thread_guard(thread_guard const&);
	thread_guard& operator=(thread_guard const&);

};


void hello()
{
	std::cout<<"hello"<<std::endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	for(int k = 0 ; k < 10 ; k++)
	{
		//std::auto_ptr<std::thread> test(new std::thread(hello));
		//boost::shared_ptr<std::thread> te(new std::thread(hello));
		std::thread test(hello);
		std::thread te(hello);
		thread_guard g(test);
		thread_guard ge(te);
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

多线程std::thread的使用以及处理线程安全的函数

有的时候很多操作如果在Cocos2d-x的主线程中来调用,可能会极大地占用主线程的时间,从而使游戏的不流畅。比如在获取网络文件数据或者在数据比较大的游戏存档时,就需要使用多线程了。 ...

C++ std::thread的坑

今天写一个unit test, 需要在子线程跑一个tcp客户端,来验证服务端功能: ConsoleUploadFile::ConsoleUploadFile() {    ... ...     ...

C++11线程,亲合与超线程

原作者:Eli Bendersky http://eli.thegreenplace.net/2016/c11-threads-affinity-and-hyperthreading/ 背景与简介...

C++11线程指南(8)--死锁

1. 死锁   在多个mutex存在的时候,可能就会产生死锁。   避免死锁的一个最通用的方法是,总是按照相同的顺序来lock the two mutexes, 即总是先于mutex B之前lock ...
  • shltsh
  • shltsh
  • 2014-08-09 16:56
  • 1708

C++11线程指南(7)--资源竞争条件

1. 接口设计1   下面例子使用vector实现了一个栈。两个线程轮流从中弹出元素。 #include #include #include #include #include std::...

C++11线程指南(4)--右值引用与移动语义

1. 按值传递   什么是按值传递?   当一个函数通过值的方式获取它的参数时,就包含有一个拷贝的动作。编译器知道如何去进行拷贝。如果参数是自定义类型,则我们还需要提供拷贝构造函数,或者赋值运算符来进...

C++11线程指南(6)--共享内存与互斥

1. 共享内存   先回顾一下前面几章中用到的,一个存在资源竞争的例子:
  • shltsh
  • shltsh
  • 2014-08-09 13:19
  • 1393

effective c++条款13-17 “以对象管理资源”之RAII浅析

RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种...

RAII惯用法:C++资源管理的利器

cocos2dx window

RAII惯用法:C++资源管理的利器

RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)