Sveiki, Dabartinis sprendimas yra veikiantis, tachiau iskilo klausimas, kaip sinchronizavima padaryti optimalesni. Zhodzhiu, situacija tokia: yra programa-serveris ir >10 programu-klientu, veikianchiu tame pachiame kompe (naudojama Windows OS). Visi jie naudoja bendra masyva (duomenu struktura), patalpinta i SharedMemory, be to, klientu kiekis nera fiksuotas ir, laikui begant, gali kisti. Serveris duomenis i masyva gali rashyti ir skaityti, o klientai - tik skaityti. Kad klientai nenuskaitytu klaidingu duomenu tuo metu, kai serveris juos modifikuoja, butina organizuoti sinchronizavima. Dabar apie esama sinchronizavimo realizacija ir kas man joje nepatinka. Shiuo metu sinchronizavimui yra naudojamas mutex'as - kai kuri nors viena programa gauna mutex'a, ji turi priejima prie duomenu, o priejimas kitoms programoms (tiek serveriui, tiek klientams) yra uzhdraustas, kol nebus atlaisvintas mutex'as. Kaip minejau, shis sprendimas veikia pakenchiamai, tachiau man nepatinka tai, kad klientai tik po viena gali prieiti prie duomenu. Kadangi klientai neatlieka duomenu rashymo, nera reikalo riboti priejimo kitiems klientams, kai vienas ish klientu jau turi priejima prie duomenu. Be to, labai noretusi, kad serveris turetu tam tikra prioriteta priesh klientus, nes dabartiniame sprendime, esant didesniam klientu kiekiui, labai ishauga tikimybe, kad serveris nesulauks progos pateikti duomenis (nesulauks tokio momento, kad nei vienas ish klientu neturetu priejimo prie duomenu). Ish tiesu, shioje sistemoje nieko ypatingai tragishko neivyksta, jei tam tikra duomenu porcija yra "prazhiopsoma", tachiau reikia, kad tokiu situaciju susidarytu kuo mazhiau. Del to ir norechiau tobulinti shi sinchronizavimo mechanizma. Shis projektas yra vystomas su Delphi, tachiau tema patalpinu bendroje shakoje, nes man nera reikalingas tikslus sprendimo kodas, o tik pati ideja, kaip geriau suorganizuoti sinchronizavima. O ideja daugiau priklauso nuo naudojamos operacines sistemos (naudojamos Windows API funkcijos), nei nuo programavimo kalbos, kuria vystomas projektas. Pats svarschiau galimybes naudoti kitas sinchronizavimo priemones (Semaphore'us, InterlockedIncrement, InterlockedDecrement), tachiau gero sprendimo dar nesugalvojau, todel kviechiu pasidalinti savo mintimis.