X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/55ad634bd982190cbb65891936938b68aca89829..b5e12b5385e12f089e86f207422e19d2faea235a:/src/kernel/activity/MutexImpl.hpp diff --git a/src/kernel/activity/MutexImpl.hpp b/src/kernel/activity/MutexImpl.hpp index f372ea76d5..ba85ad0f9e 100644 --- a/src/kernel/activity/MutexImpl.hpp +++ b/src/kernel/activity/MutexImpl.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2012-2020. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -18,6 +18,9 @@ class XBT_PUBLIC MutexImpl { std::atomic_int_fast32_t refcount_{1}; s4u::Mutex piface_; bool locked_ = false; + actor::ActorImpl* owner_ = nullptr; + // List of sleeping actors: + actor::SynchroList sleeping_; public: MutexImpl() : piface_(this) {} @@ -32,9 +35,8 @@ public: MutexImpl* ref(); void unref(); - actor::ActorImpl* owner_ = nullptr; - // List of sleeping actors: - actor::SynchroList sleeping_; + void remove_sleeping_actor(actor::ActorImpl& actor) { xbt::intrusive_erase(sleeping_, actor); } + actor::ActorImpl* get_owner() const { return owner_; } // boost::intrusive_ptr support: friend void intrusive_ptr_add_ref(MutexImpl* mutex)