#include <iostream>
#include <fstream>
#include <iterator>
#include <string>
using namespace std;
// 一个使用boost::thread_specific_ptr线程本地存储的示例,value将不受其它线程影响.
#include <boost/thread/thread.hpp>
#include <boost/thread/tss.hpp>
#include <cassert>
boost::thread_specific_ptr<int> value;
void increment()
{
int* p = value.get();
++*p;
}
void thread_proc()
{
value.reset(new int(0)); // initialize the thread's storage
for (int i=0; i<10; ++i)
{
increment();
int* p = value.get();
cout<<*p<<endl;
assert(*p == i+1);
}
}
void test001()
{
boost::thread_group threads;
for (int i=0; i<5; ++i)
threads.create_thread(&thread_proc);
threads.join_all();
}
int main()
{
test001();
ifstream if1("/root/test.txt");
if (!if1) {
cerr << "err: unable to open input file: " << __FILE__ << endl;
return -1;
}
ofstream of1("/root/test_of.log");
if (!of1) {
cerr << "err: unable to open ouput file:" << __FILE__ << endl;
return -2;
}
// 通过>>与<<操作将输入文件写入输出文件
string word;
while (if1 >> word)
of1 << word << '\n';
// 通过输入&输出跌代器与copy函数将输入文件写入输出文件
istream_iterator<string> is_iter(if1);
ostream_iterator<string> os_iter(of1, "\n");
//以字符串的形式从输入流拷贝到输出流
copy(is_iter, istream_iterator<string>(), os_iter);
of1.close();
if1.close();
cout<<"ok"<<endl;
return 0;
}
boost IO流和本地线程存储
最新推荐文章于 2020-05-10 19:00:26 发布