volatile和LockingPtr

本文探讨了在多线程环境下LockingPtr的设计理念及其重要性,通过封装volatile指针与mutex为一个整体,确保了对内部指针的安全访问。文章推荐读者进一步了解《volatile—多线程程序员的最佳朋友》。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

muduo里面有一个简单的threadpool实现,

但还是不过瘾,于是看看boost有没有更复杂的,才发现居然没有纳入,

后来google到sourceforge 里面有一个开源的,也是基于boost实现的,于是下载看看。

 

代码不多,但看不习惯泛型代码还是非常痛苦的。

 

浏览过程中发现了一个比较怪的用法(locking_ptr.hpp),

一个ptr和一个mutex封装成一个wrapper来使用,第一时间就觉得有点效率不高,

 

作者是这些解析的:

 

* The class is a wrapper for a volatile pointer. It enables synchronized access to the
* internal pointer by locking the passed mutex.
* locking_ptr is based on Andrei Alexandrescu's LockingPtr. For more information
* see article "volatile - Multithreaded Programmer's Best Friend" by A. Alexandrescu.

 

于是继续google了LockingPtr,才发现是有缘由的。

 

在多线程编程中volatile是很重要的一个关键字,

而LockingPtr的作用,也正在于此。

封装的wrapper内使用const_cast第一时间去volatile化,因为有mutex的scope lock存在。

也就是外面是volatile的,内部是非volatile的。

 

更多内容,建议看看《volatile - Multithreaded Programmer's Best Friend》,有翻译版本的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值