Teoriškai tau reikalingi Read-Write muteksai. Kaip delphyje su tuo dalyku tai neįsivaizduoju. Čia kažkos trolltech pasvaigimas - http://doc.trolltech.com/qq/qq11-mutex.html gal užves ant kelio On 2010.04.01 15:17, Andrius Samuolis wrote: > 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. > > >