Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sinhronizacija dva programa

[es] :: C/C++ programiranje :: Sinhronizacija dva programa

[ Pregleda: 3611 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Sinhronizacija dva programa31.03.2005. u 13:30 - pre 231 meseci
Pokusavam da naprvim cgi.exe program koji će raditi sa SQLITE bazom podataka u C-u.
Čitao sam nešto o sinhronizaciji odvojenih procesa u dokumentaciji SQLITE baze ali on govori o dva threda and ne o dve instance istog ili različitih programa koji pristupaju istom DB fajlu.

Da li postoji neki Widnows-ov mehanizam za sinhronizaciju programa.

Znam za sinhronizaciju thred-ova pomocu CreateSemaphore ili CriticalSection. Da li postoje neke funkcije za sihronizaciju programa?

Pozdrav,
Ljubiša Knežević

 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Sinhronizacija dva programa31.03.2005. u 13:39 - pre 231 meseci
file lock?
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Re: Sinhronizacija dva programa31.03.2005. u 13:47 - pre 231 meseci
Koliko sam shvatio, SQLITE pravi lock nad fajlom, ja bih mogao da pravim lock nad nekim drugim fajlom, pa da poslje provjeravam da li je fajl zaključan ali sam se nadao da postoji neki Windows-ov ugrađeni mehanizam koji bi dodjeljivao pravo poziva sqlite.dll prema tome ko je prvi zatrazio.




 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Sinhronizacija dva programa31.03.2005. u 16:03 - pre 231 meseci
Stvarno se ne razumem u SQLITE, i nisam siguran da li postoji neki
ugrađeni mehanizam za takvo nešto. Zato su (pored ostalog) i smisljeni
serveri - da klijenti komuniciraju sa serverom (EXE-om), a ne direktno
sa datotekama.

Dakle, kada jedan server upravlja upisima, onda kao što si rekao -
semafori i kriticne sekcije igraju kljucnu rec.

U tvom slucaju mozes da improvizujes. Napravi nekakav 'Retry mehanizam'
koji bi cekao neko vreme da se datoteka oslobodi - a onda po filmu -
"a sad malo ona". I sve tako.

Mislim da nema druge.
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.hsd1.wa.comcast.net.



+18 Profil

icon Re: Sinhronizacija dva programa31.03.2005. u 17:19 - pre 231 meseci
Za sinhronizaciju procesa pogledaj mutexe, mislim da oni rade to sto tebi treba:
http://msdn.microsoft.com/libr...s/dllproc/base/createmutex.asp
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.dialup.blic.net.



+2 Profil

icon Re: Sinhronizacija dva programa31.03.2005. u 20:09 - pre 231 meseci
Izgleda da ipak nije :(

Pokušao sam sa: hmutex = CreateMutex(&sca,TRUE,"TestSynchroMutex")
Dalje u programu imam test da li je hmutex NULL ili ne.
Program nakon kreiranja mutexa spava 5 sekundi a onda oslobadja mutex.

Kada paralelno pokrenem više instanci istog programa, svi vrate normalan HANDLE na kreirani mutex.

Očekivano ponašanje bi bilo da samo prva instanca programa kreira mutex dok druge treba da da vrate null i GetLastError treba da vrati ERROR_ALREADY_EXISTS.

Ili ovo funkcionise drugacije ili se mora korisiti nešto drugo za sinhronizaciju programa.

U svakom slučaju hvala za link. Našao sam tamo i link o svim sinhronizacionim metodama pa možda "iščačkam" nešto što bih mogao iskoristiti.







 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.dialup.blic.net.



+2 Profil

icon Re: Sinhronizacija dva programa31.03.2005. u 20:50 - pre 231 meseci
Nasao sam!

CreateWaitableTimer vraca ERROR_ALREADY_EXISTS poslje poziva GetLastError() ako je neki proces vec kreirao CreateWaitableTimer sa istim imenom!

Mozda postoji jos neki nacin za "interprocess synchronization"

Pozdrav,
Ljubisa
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Sinhronizacija dva programa01.04.2005. u 11:38 - pre 231 meseci
Može i mutex samo što vlasništvo nad mutexom dobijaš kad ti WaiForSingleObject nad hendlom od mutexa vrati WAIT_OBJECT_0. Na kraju moraš da pozoveš ReleaseMutex da bi oslobodio vlasništvo nad mutexom.
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Re: Sinhronizacija dva programa01.04.2005. u 11:56 - pre 231 meseci
Kako drugi proces dobija handle od mutex-a za WaiForSingleObject funkciju?

Može li neki primjer.

Hvala.

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Sinhronizacija dva programa01.04.2005. u 13:44 - pre 231 meseci
http://www.codeproject.com/threads/sync.asp

Kad kreiras mutex mozes da mu das ime. To ime je jedinstveno u sistemu, kao sto je i taj mutex jedinstven u sistemu. Moze da ima vise hendlova na njega, ali to je i dalje samo jedan mutex. Ono sto je bitno je kome mutex trenutno pripada. Da bi dobio vlasnistvo nad mutexom koristis WaitForSingleObject. Da bi oslobodio vlasnistvo nad mutexom koristis ReleaseMutex. Posmatraj mutex kao kriticnu sekciju, sa sledecim analogijama:

InitializeCriticalSection = CreateMutex
EnterCriticalSection i TryEnterCriticalSection = WaitForSingleObject
LeaveCriticalSection = ReleaseMutex
DeleteCriticalSection = CloseHandle
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Re: Sinhronizacija dva programa04.04.2005. u 13:47 - pre 231 meseci
Hvala mislim da sam shvation kako rade mutex-i.

Pokusacu ovo ali sam u medjuvremenu otkrio da ugradjeni mehanizam sqlite-a je dovoljan da zadrzi jedan proces u "busy" modu dok drugo upisuje u bazu.

Obzirom da ce se svi inserti updates desavati u par milisekundi ovo bi trebalo biti dovoljno.

Pozdrav,
Ljubisa Knezevic
 
Odgovor na temu

[es] :: C/C++ programiranje :: Sinhronizacija dva programa

[ Pregleda: 3611 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.