博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[boost学习笔记] 关于thread
阅读量:5021 次
发布时间:2019-06-12

本文共 3220 字,大约阅读时间需要 10 分钟。

#include 
#include
//#include
#include
#include
#include
#include
//boost::mutex io_mutex;////struct count//{// count(int id):id(id){}// void operator()()// {// for(int i = 0; i < 10; ++i)// {// boost::mutex::scoped_lock lock(io_mutex);// std::cout << id << ": " << i << std::endl;// }// }// int id;//};//int main(int argc, char* argv[])//{// boost::thread thrd1(count(1));// boost::thread thrd2(count(2));// // thrd1.join();// thrd2.join();// return 0;//}//boost::mutex io_mutex;////void count(int id)//{// for(int i = 0; i < 10; i++)// {// boost::mutex::scoped_lock lock(io_mutex);// std::cout << id << ": " << i << std::endl;// }//}////int main(int argc, char* argv[])//{// boost::thread thrd1(boost::bind(&count, 1));// boost::thread thrd2(boost::bind(&count, 2));// thrd1.join();// thrd2.join();// return 0; //}//const int BUF_SIZE = 10;//const int ITERS = 100;////boost::mutex io_mutex;////class buffer//{//public:// typedef boost::mutex::scoped_lock scoped_lock;//// buffer():p(0), c(0), full(0)// {// }//// void put(int m)// {// scoped_lock lock(mutex);// if(full == BUF_SIZE)// {// {// boost::mutex::scoped_lock lock(io_mutex);// std::cout << "Buffer is full, waiting..." << std::endl;// }// while(full == BUF_SIZE)// cond.wait(lock);//// }// buf[p] = m;// p = (p+1) % BUF_SIZE;// ++full;// cond.notify_one();// }//// int get()// {// scoped_lock lk(mutex);// if(full == 0)// {// {// boost::mutex::scoped_lock lock(io_mutex);// std::cout << "Buffer is empty, waiting............" << std::endl;// }// while(full == 0)// cond.wait(lk);// }// int i = buf[c];// c = (c+1) % BUF_SIZE;// --full;// cond.notify_one();// return i;//// }//private:// boost::mutex mutex;// boost::condition cond;// unsigned int p, c, full;// int buf[BUF_SIZE];//};////buffer buf;//void writer()//{// for(int n = 0; n < ITERS; ++n)// {// {// boost::mutex::scoped_lock lock(io_mutex);// std::cout << "sending: " << n << std::endl;// }// buf.put(n);// }//}////void reader()//{// for(int x = 0; x < ITERS; ++x)// {// int n = buf.get();// {// boost::mutex::scoped_lock lock(io_mutex);// std::cout << "received: " << n << std::endl;// }// }//}////int main(int argc, char* argv[])//{// boost::thread thrd1(&reader);// boost::thread thrd2(&writer);// thrd1.join();// thrd2.join();// return 0;//}//boost::mutex io_mutex;//boost::thread_specific_ptr
ptr;////struct count//{// count(int id):id(id){}// void operator()()// {// if(ptr.get() == 0)// ptr.reset(new int(0));//// for(int i = 0; i < 10; ++i)// {// (*ptr)++;// boost::mutex::scoped_lock loc(io_mutex);// std::cout << id << ": " << *ptr << std::endl;// }// }// int id;//};////int main(int argc, char* argv[])//{// boost::thread thrd1(count(1));// boost::thread thrd2(count(2));// thrd1.join();// thrd2.join();// return 0;//}int i = 0;boost::once_flag flag = BOOST_ONCE_INIT;void init(){ ++i;}void thread(){ boost::call_once(&init, flag);}int main(int argc, char* argv[]){ boost::thread thrd1(&thread); boost::thread thrd2(&thread); thrd1.join(); thrd2.join(); std::cout<< i << std::endl; return 0;}

  

转载于:https://www.cnblogs.com/liangflying/archive/2012/10/26/2741714.html

你可能感兴趣的文章
每天一个Linux命令(6):rmdir命令
查看>>
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
Silverlight动态调用WEBSERVICE,WCF方法
查看>>
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>
连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
查看>>
Java操作Excel和Word
查看>>
Oracle 体系结构之ORACLE物理结构
查看>>
ORA-12538: TNS: no such protocol adapter
查看>>
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>