跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
WHY42
搜索
搜索
外观
登录
个人工具
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁Boost:互斥锁”︁的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
外观
移至侧栏
隐藏
←
Boost:互斥锁
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
<source lang="cpp"> #include <iostream> #include <vector> #include <boost/thread.hpp> #include <windows.h> int sum = 0; boost::mutex mu; int addNum(int nCount){ for (int i = 0; i < nCount; i++){ boost::mutex::scoped_lock lock(mu); sum++; } return sum; } int main(int argc, char* argv[]) { std::vector<boost::thread*> threads; for (int i = 0; i < 1000; i++) { boost::thread* t = new boost::thread(addNum, 1000); threads.push_back(t); } std::vector<boost::thread*>::iterator it; for (it = threads.begin(); it != threads.end(); it++) { boost::thread* t = *it; t->join(); } for (int j = 0; j < 10; j++) { std::cout << sum << endl; Sleep(200); } for (it = threads.begin(); it != threads.end(); it++) { boost::thread* t = *it; delete t; } system("pause"); return 1; } </source> 如上的这一段代码,创建了1000个线程,每个线程把sum增加1000,那么程序的结果理论上应该是: <pre> 1000 * 1000 = 1000,000 </pre> 如果不加锁,我们屏蔽掉boost::mutex::scoped_lock lock(mu); 这一行代码,运行一下看看: [[Category:Programe]]
返回
Boost:互斥锁
。
搜索
搜索
查看“︁Boost:互斥锁”︁的源代码
添加话题