Tema: Re: SharedMemory sinchronizavimas
Autorius: trigras
Data: 2010-04-01 15:37:32
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.
>
>
>