zmenki nazaj naprej naslednja tehnika ki naj zagotovi medsebojno izobcenje ter sinhronizacijo je tehnika zmenkov ki so jo uvedli v programskem jeziku ada srecamo se s pojmoma streznik in klijent klicoci in servisni proces v razliko od monitorjev je to aktiven mehanizem tudi streznik je namrec aktiven proces ne le neka pasivna procedura servisni proces vsebuje vec takoimenovanih vhodov entry ki jim ustrezajo stavki accept take vhode pa lahko klice proces ki potrebuje zmenek s servisnim programom ne pozabimo da je tudi streznik proces ki zivi ce pride streznikdo nekega stavka accept tu pocaka da bo nek paralelni proces zahteval zmenek pri tem vhodu ce pa nek paralelni proces klice vhod streznika ko ta se ni prisel do stavka accept mora prav tako pocakati ko pride do zmenka klicoci proces posreduje strezniku morebitne parametre in pocaka da streznik izvede stavke znotraj telesa accept streznik se posreduje klicocemu programu morebitne rezultate in zmenek je koncan oba procesa se nato odvijata naprej neodvisno zanimivo je da morajo klicoci programi poznati vstopne tocke v streznik slednji pa lahko servisira klic kateregakoli klicocega procesa takih procesov pa je lahko tudi vec v tem smislu je tehnika zmenkov asimetricna zmenki in problem proizvajalec porabnik demonstracijski primer spet obravnava problem proizvajalec porabnik komunikacija med procesom proizvajalcem in procesom porabnikom tu poteka posredno preko streznega procesa proizvajalec posilja zaporedje znakov ascii ki jih nato porabnik prevzema to tehniko lahko prakticno uporabimo pri programiranju komunikacije racunalnika z nekim terminalom ali oddaljenim racunalnikom task simplebuffer is entry write ch in character entry read ch out character end simplebuffer task body simplebuffer is char character begin loop accept write ch in character do char ch end write accept read ch out character do ch char end read end loop task producer task body producer is c character begin loop produce c simplebuffer write c end loop end producer task consumer task body consumer is c character begin loop simplebuffer read c use c end loop end consumer