Кіріспе

Компьютерлік ғылымда сабақтастық мәселесі

Компьютерлік ғылымда оқырмандар-жазушылар мәселесі сабақтастықтағы жиі кездесетін есептеу мәселесінің мысалы болып табылады. Мұндай мәселенің кем дегенде үш түрі бар, олар бір уақытта бірдей ортақ ресурсқа қол жеткізуге тырысатын көптеген параллель орындалу тізбектерінің жағдайларын қарастырады. Кейбір тізбектер оқи алады, ал кейбіреулері жаза алады, бірақ екінші тізбек оған жазу кезінде оқу немесе жазу үшін ортақ ресурсқа кіре алмайды. (Атап айтқанда, ортақ ресурсты бір уақытта бірнеше тізбек өзгертуіне жол бермей, екі немесе одан да көп оқырманға ортақ ресурсқа бір уақытта қол жеткізуді қамтамасыз ету қажет). Оқырман-жазушы құлпы – оқырман-жазушы мәселелерінің бірін немесе бірнешеуін шешетін дерек құрылымы. Негізгі оқырман-жазушы мәселесін алғаш рет Куртуа және авторлар тұжырымдап, шешкен.

Ең қарапайым оқушы-жазушы мәселесі

Ең қарапайым оқушы-жазушы мәселесі, ол тек екі семафорды пайдаланады және буфердегі деректерді оқу үшін оқырмандар тізімі қажет емес. Бұл шешімнің жалпы жағдайдан қарапайым екенін ескеріңіз, себебі ол шектелген буфер мәселесімен бірдей, сондықтан буфердің көлеміне дейін тек оқырмандар ғана параллель түрде кіре алады.

Алгоритм

Оқушы оқу семафоры оқылғандықтан жазушының артынан қуады. Жазушы жазу семафоры 0-ге жеткенде жазуды тоқтатады. Оқушы оқу семафоры 0-ге жеткенде оқуды тоқтатады. Жазушыда жазу семафорының мәні оқу семафорына беріледі, ал оқушыда оқу аяқталған соң оқу мәні жазу семафорына беріледі.