Slēdzenes dizains
Iegūstiet slēdzenes ieviešanas ideju: 1. Sāciet ar direktorija izveidi kā slēdzeni (znode), ko parasti izmanto, lai aprakstītu bloķēto entītiju, ko sauc par :/lock_node 2. Klients, kurš vēlas iegūt slēdzeni, izveido znode bloķēšanas direktorijā kā slēdzenes/lock_node bērnu mezglu, un mezgla tips ir pasūtīts pagaidu mezgls (EPHEMERAL_SEQUENTIAL); Piemēram, divi klienti izveido znodes, /lock_node/lock-1 un /lock_node/lock-2 3. Pašreizējais klients izsauc getChildren(/lock_node), lai iegūtu visus bloķēšanas direktorijas bērnu mezglus, neiestatot pulksteni, un pēc tam iegūstot brāļu mezglus, kas ir mazāki par sevi (izveidots 2. solī). 4. Mezgls, kas ir mazāks par sevi 3. solī, neeksistē && mazākais mezgls ir tāds pats kā 2. solī izveidotais, norādot, ka pašreizējais klienta kārtas numurs ir mazākais, iegūstiet slēdzeni un beigas. 5. Klients uzrauga sakārtotā pagaidu mezgla stāvokli, kas ir nākamais mazākais sev 6. Ja mainās pārraudzītā apakšmezgla statuss, pārejiet uz 3. soli un turpiniet turpmākās darbības, līdz bloķēšanas sacensības tiek izbeigtas.
Autors šeit neieviesīs izplatīšanas bloķēšanu, apskatīsim visa koda dizaina plūsmas diagrammu šādi
|