čtenáři - online puzzle

Problém čtenářů a písařů, také známý jako problém sdíleného a exkluzivního zamykání, patří ke klasickým výpočetním problémům při řešení souběžnosti, kterými se zabývá informatika. Tento problém se vyskytuje v situacích, kdy více vláken v roli čtenáře nebo písaře musí přistupovat ke stejné sdílené paměti, aby do ní zapisovaly nebo z ní četly. Přitom je potřeba zaručit integritu dat, která může být porušena souběhem čtenáře a písaře nebo dvou písařů. Čtenářům a písařům tedy nesmí být umožněno, aby si měnili data „pod rukama“.

Řešení problému

Triviální řešení

Sdílená data je možné ochránit jedním binárním zámkem (například mutexem) tak, aby žádná dvě vlákna nemohla přistupovat k datům ve stejný okamžik. Toto řešení však není optimální, protože pokud čtenář Č2 zažádá o přístup k paměti v dobu, kdy čtenář Č1 přístup již má, bylo by hloupé nechat čtenáře Č2 čekat, než Č1 dočte, protože čtenáři data nemění, a jejich integrita tedy porušena být nemůže.

Řešení s preferencí čtenářů

Triviální řešení lze vylepšit o omezení, že pokud je čtenáři umožněno číst, žádný další příchozí čtenář nesmí být nechán čekat. Čtenářům je tak umožněno, aby četli zároveň.

Řešení s preferencí písařů

Pokud může být požadavků na čtení mnoho a jejich vyřizování trvá dlouho, není řešení s preferencí čtenářů optimální. Čtenáři totiž mohou svými časově překrývajícími se požadavky udržovat paměť stále zamčenou pro čtení a písařům se ji nemusí nikdy podařit uzamknout pro zápis.

mezipatro online puzzleBLOG NEBO VESTNÍK online puzzleKnihovna plná čtenářů skládačky online