线程本地存储实例

来源:互联网 发布:张大奕淘宝店叫啥 编辑:程序博客网 时间:2024/06/05 15:20
// Copyright (C) 2001-2003// William E. Kempf////  Distributed under the Boost Software License, Version 1.0. (See accompanying //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//  一个使用boost::thread_specific_ptr线程本地存储的示例,value将不受其它线程影响.#include <boost/thread/thread.hpp>#include <boost/thread/tss.hpp>boost::thread_specific_ptr<int> value;void increment(){int* p = value.get();++*p;}boost::mutex io_mutex;void thread_proc(){value.reset(new int(0)); // initialize the thread's storagefor (int i=0; i<10; ++i){increment();int* p = value.get();boost::mutex::scoped_lock lock(io_mutex);std::cout << boost::this_thread::get_id() << " : " << *p <<std::endl; }}int main(int argc, char* argv[]){boost::thread_group threads;for (int i=0; i<2; ++i)threads.create_thread(&thread_proc);threads.join_all();}

0 0
原创粉丝点击