Peter in Simona se morata torej nekako dogovoriti, kako bo potekala transakcija, torej postopek prodaje karte. Odločita se, da bo ob prodaji Peter prevzel knjigo in je ne bo vrnil, dokler transakcija ne bo končana, pa čeprav bodo Simona in njene stranke morale čakati. Pravimo, da bo knjigo zaklenil za uporabo. Takšnemu nedeljivemu postopku pravimo tudi neprekinljiva oziroma atomična transakcija. Podobno velja tudi za atomične funkcije, ki se, ko se enkrat pričnejo izvajati, neprekinljivo izvajajo, dokler se ne končajo. Peter in Simona sta z rešitvijo zadovoljna, zato naslednji dan začneta z novim načinom dela.
Peter sprejme prvo stranko, zato vzame knjigo v naročje, prečrta sedež in jo vrne na sredino. Nato podobno stori Simona za svojo stranko. K Petru vmes pride že nekaj več ljudi, zato vzame knjigo in postreže kar vse stranke ter črta sedeže. Medtem Simona nestrpno čaka Petra, saj se tudi njena vrsta vztrajno daljša, brez vpogleda v knjigo pa ne more prodajati kart. Simona morda sploh ne bo več prišla do knjige in v tem primeru govorimo o problemu stradanja. Ko en proces zasede vir in drugi ne more dostopati do njega, drugi proces strada vira.
Ponovno se sestaneta z lastnikom. Peter in Simona imata problem, lastnik pa odlično novico – prodaja kart se je tako povečala, da bodo naredili večjo dvorano z dvema vhodoma. Peter in Simona bosta karte prodajala vsak pri svojem vhodu, vsak bo imel svoj računalnik in prodajo kart bosta usklajevala s pomočjo preglednice v spletni storitvi Google Docs. Sedaj lahko hkrati urejata preglednico brez podajanja knjige. Vseeno pa se še vedno lahko pripeti, da oba označujeta isti sedež. Iz dosedanjih izkušenj sta se že naučila, da sme imeti vstop v kritično območje le en proces, drugi mora pa počakati. V Google Docs sta našla možnost urejanja preglednice, pri kateri ima eden pravico urejanja (can edit), drugi pa lahko le gleda (view only). Peter najprej Simoni dodeli lastništvo nad preglednico (is owner), hkrati pa se sam odpove pravici urejanja in preide v način za ogled (view only). Ko Simona izvede obratni postopek, preda lastništvo Petru in tako si izmenično predajata lastništvo nad preglednico.
Peter dodeli lastništvo Simoni |
Sprememba lastništva |
Rešitev se jima je zdela imenitna in komaj sta čakala na odprtje nove dvorane. Prvi teden je vse potekalo kot po maslu. Izmenično sta si podajala lastništvo nad preglednico in se tako izognila dosedanjim nevšečnostim:
Peter (vrsta 6, sedež 6) Simona (vrsta 8, sedež 5) Peter (vrsta 5, sedež 3) Simona (vrsta 4, sedež 8) Peter (vrsta 6, sedež 2) Simona (vrsta 6, sedež 5) |
Nato se je nekega dne spet zapletlo. Simona je postregla svojo stranko in Petru predala lastništvo nad preglednico, a Peter v tistem trenutku v svoji vrsti ni imel nobene stranke. Namesto da bi se odpovedal lastništvu nad preglednico, je v skladu s protokolom čakal novo stranko, ki je ni in ni bilo. Pri Simoninem vhodu se je vmes pričela vrsta naglo daljšati. V tem primeru je Simona spet stradala, ker ni dobila skupnega vira (preglednice). Očitno tudi ta postopek ni zagotavljal učinkovite rešitve.
Kaj bi moral omogočati Google Docs, da bi ta rešitev bila ustrezna?