+ bool would_block() const { return (value_ == 0); }
+ void remove_sleeping_actor(actor::ActorImpl& actor) { xbt::intrusive_erase(sleeping_, actor); }
+
+ unsigned int get_capacity() const { return value_; }
+ bool is_used() const { return not sleeping_.empty(); }
+
+ SemaphoreImpl* ref();
+ void unref();