互斥资源加锁的实现方式
来源:互联网 发布:淘宝头像 编辑:程序博客网 时间:2024/05/16 14:59
若使用mutex.lock()方法时std::cout出现异常,则会导致mutex无法释放。改用std::lock_guard可有效避免该情况发生。
#include <iostream>#include <thread>#include <string>#include <mutex>using namespace std;std::mutex mu;// 对资源加锁/// 用lock若cout抛出异常则mu永远不会被释放/// 用lock_guard析构时自动释放void shared_print(std::string msg, int id) { std::lock_guard<std::mutex> guard(mu); // 较好的方法 //mu.lock(); // 较差的方法 std::cout << msg << id << std::endl; //mu.unlock();}void func_1() { for (int i = 0; i > -100; --i) { shared_print("from func_1 ", i); }}class Fctor {public: void operator()(string& s) { for (int i = 0; i > -10; --i) { std::cout << "from t1: " << s << std::endl; } s = "factor"; }};int main() { std::thread t1(func_1); for (int i = 0; i < 100; ++i) { shared_print("from main ", i); } t1.join(); return 0;}
阅读全文
0 0
- 互斥资源加锁的实现方式
- 用面向对象的方法实现互斥资源加锁
- 线程互斥(加锁实现)
- 用临界区实现互斥资源的访问
- Redis实现lock互斥访问资源
- 文件互斥的方式实现哲学家就餐问题
- 相关进程间实现互斥的几种方式
- 一种奇葩耳机与喇叭互斥的实现方式
- 多线程访问共享内存的不加锁实现方式
- 多线程访问共享内存的不加锁实现方式
- 多线程访问共享内存的不加锁实现方式
- 多线程访问共享内存的不加锁实现方式
- 如何采用不加锁的方式实现线程同步
- 共享内存加锁互斥访问
- 资源加锁
- 线程间的资源互斥共享
- 临界资源互斥的基本方法
- php用apc实现的临界区 解决并发,资源互斥同步访问
- 杭电ACM:人见人爱A-B
- 路漫漫其修远兮,吾将上下而求索(非干货,勿入)
- CSS3理解display属性
- 数据结构--堆
- css——三角形的实现
- 互斥资源加锁的实现方式
- 用面向对象的方法实现互斥资源加锁
- 串行队列/并发队列&异步任务/同步任务代码演练
- less简单笔记
- Simple Class Serialization With JsonCpp
- 【HDU1069】 Monkey and Banana(动态规划)
- windows10 64位 redis3.0.*下载以及安装
- 多线程入门
- 容斥原理 + 大数模板(跳蚤 POJ