Jaký je problém čtenářů-spisovatelů?
Problém „Problém čtenářů-spisovatelů“ je dilema programování vytvořené, když více čtenářů a spisovatelů potřebuje přístup ke stejnému zdroji. Pokud by jim byl povolen přístup najednou, mohou nastat problémy, jako jsou přepisování, neúplné informace a další problémy. Programátoři proto mohou omezit přístup ke kontrole, která vlákna zpracování vidí zdroj a kdy s ohledem na potřeby systému a uživatelů. Existuje několik způsobů, jak řešit problém čtenářů-spisovatele. Jedním z nejběžnějších řešení zahrnuje použití semaforů k označení stavu a řízení stavu.
Z jednoho pohledu by jakýkoli počet čtenářů mohl bezpečně přistupovat ke zdroji, protože nezměnili obsah. Jakmile spisovatel vstoupí do rovnice, situace se stává komplikovanější. Pokud vlákno píše při čtení jiných vláken, čtenáři nemusí získat správné informace. Mohli by obdržet pouze část změny, nebo mohli vidět zastaralé informace a myslet si, že jsou přesné.
Problém by také mohl vytvořit více než jeden spisovatel. Současné změny stejného obsahu by jej mohly přepsat a vytvořit další chyby. V rámci problému čtenářů-psacíci se musí programátoři rozhodnout, zda čtenáři nebo spisovatelé mají prioritu a jak zvládnout přístup. Čtenáři nebo spisovatelům by mohli být přiděleni priorita, nebo systém by mohl přiřadit přístup na základě prvního příchodu, nejprve sloužit. Toto třetí řešení může zabránit dlouhým čekání, ale mohlo by přijít s vlastními problémy.
V řešení, kde mají čtenáři prioritu, předpokládá, že každý čtenář, který žádá o přístup, by měl být povolen nejprve, když bude přístup k dispozici. To znamená, že všichni spisovatelé, kteří chtějí přístup ke zdroji, by mohli potřebovat čekat. Naopak může systém předpokládat, že protože spisovatelé musí provádět změny, které by mohly ovlivnit čtenáře, měly by být v rámci problému čtenářů upřednostňovány. Když je čtenář hotový se zdrojiCE, spisovatel by mohl skočit, aby provedl změnu. To platí nejen pro akce uživatele, jako je pokus o uložení dokumentu, ale na interní procesy uvnitř počítače, které udržují systém v provozu.
Další možnost umožňuje problému čtenářů-spisovatelů vyvážit potřeby obou stran, což umožňuje každému přístupu ke zpracování vlákna při příchodu. To brání spisovatelům v provádění změn, které se navzájem potlačují nebo zaměňují čtenáře, aniž by čtenáři nechali čekat, nebo nutit spisovatele, aby drželi, zatímco čtenáři skončí. Takové priority mohou být zabudovány do softwarového programu nebo ovládání přístupu do paměti v počítači. Uživatelé mohou být schopni provést změny, pokud jsou pohodlné s programováním a systém to umožňuje.