- /* refcounting of the intrusive_ptr is delegated to the implementation object */
- friend void intrusive_ptr_add_ref(Mutex* mutex)
- {
- xbt_assert(mutex);
- SIMIX_mutex_ref(mutex->mutex_);
- }
- friend void intrusive_ptr_release(Mutex* mutex)
- {
- xbt_assert(mutex);
- SIMIX_mutex_unref(mutex->mutex_);
- }
-public:
- using Ptr = boost::intrusive_ptr<Mutex>;
-
- // No copy:
- /** You cannot create a new mutex by copying an existing one. Use MutexPtr instead */
- Mutex(Mutex const&) = delete;
- /** You cannot create a new mutex by value assignment either. Use MutexPtr instead */
- Mutex& operator=(Mutex const&) = delete;
+ kernel::activity::MutexImpl* const pimpl_;
+ /* refcounting */
+ friend XBT_PUBLIC void intrusive_ptr_add_ref(const Mutex* mutex);
+ friend XBT_PUBLIC void intrusive_ptr_release(const Mutex* mutex);