@startuml semaphore
title Sémaphore

binary "Tâche 1" as t1
concise "Sémaphore" as s
binary "Tâche 2" as t2
binary "Tâche 3" as t3

scale 1000 as 100 pixels

@0
t1 is low
t2 is low
t3 is low
s is "Verrouillé"


@+3000
t1 is high

@+400
t1 is low
t2 is high
s is {-}
t1 -> s  : lib.
s  -> t2 : rév.
note top of s : T.1 libère la sémaphore\nT.2 est réveillé et verrouille la sémaphore

@+400
t2 is low
s is "Verrouillé"
t2 -> s  : verr.

@+2200
t1 is high

@+400
t1 is low
t2 is high
s is {-}
t1 -> s  : lib.
s  -> t2 : rév.

@+400
t2 is low
s is "Verrouillé"
t2 -> s  : verr.


@1000
t3 is high
@+100
t3 is low
@+900
t3 is high
@+100
t3 is low
@+900
t3 is high
@+100
t3 is low
@+900
t3 is high
@+100
t3 is low
@+900
t3 is high
@+100
t3 is low
@+900
t3 is high
@+100
t3 is low

@enduml
