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.
Copyright 2024 puzzlefactory.com Všechna práva vyhrazena.