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

INI klasa i multithreading

[es] :: C/C++ programiranje :: INI klasa i multithreading

[ Pregleda: 3142 | Odgovora: 3 ] > 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 INI klasa i multithreading20.08.2004. u 08:17 - pre 238 meseci
Zdravo,

Radim na jednom C++ programu samo upotrebom API poziva bez MFC-a.
Aplikacija otvara vise thred-ova koji treba da upisuju/citaju svoja podesavanja u isti ini fajl.

Interesuje me siguran nacin da svi thredovi mogu da pristupaju ini fajlu a da ne dodje do problema.

Ja sam ugradio sinhronizaciju sa EnterCriticalSection i LeaveCriticalSection.
Ono sto me zanima je ispravan nacin pozivanja. Primjer:

Metod1:

Code:

PisiIni("myapp","x",100);

void PisiIni(...) 
{
EnterCriticalSection(...);
// neko upisivanje u ini fajl
LeaveCriticalSection(...);
}



ili je ispravan nacin
Metod2:

Code:

EnterCriticalSection(...);
  PisiIni("myapp","x",100);
LeaveCriticalSection(...);


void PisiIni(...) 
{
// neko upisivanje u ini fajl
}




Da li neko zna za neku C++ klasu koja radi sa ini fajlovima?

Pozdrav,
Ljubisa

 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: INI klasa i multithreading20.08.2004. u 08:49 - pre 238 meseci
Verovatno jedini ispravan način je da tako napraviš da je nemoguće korisniku da bilo šta radi sa datotekom pre nego što je zaključa. Međutim nije dovoljno samo zaključati upis jer se može desiti da dve konkurentne izmene ostave datoteku u neispravnom stanju.

Evo primer. Zamisli da tvoja banka pamti na ovaj način koliko para imaš na računu. Recimo 100 dinara. U jednom trenutku dva klijenta ti uplate honorar za program, po 100 dinara svaki. Oba pročitaju stanje na računu i vide da tamo ima 100 dinara. Oba zadaju zahtev za upis 100+100 = 200 u datoteku. Naravno samo jedan u jednom trenutku može da upisuje i neka to odradi prvi. U datoteci sada piše da imaš 200 dinara na računu. Kad ovaj završi, omogućuje se drugome da upiše... koliko? pa, isto 200. 100 dinara otišlo je u dim!

f
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: INI klasa i multithreading20.08.2004. u 13:09 - pre 238 meseci
Gotov kod za INI klase možeš da nađeš npr ovde:

http://www.codeproject.com/cpp/CIni.asp

Što se tiče zaključavanja, oba metoda vrše posao, ali je u principu bezbednije koristiti neki RAII baziran lock, kao što je ovaj ovde (napisao ga je naš čovek):

http://www.codeproject.com/threads/tsynchro.asp
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

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



+2 Profil

icon Re: INI klasa i multithreading21.08.2004. u 12:28 - pre 238 meseci
Hvala!


 
Odgovor na temu

[es] :: C/C++ programiranje :: INI klasa i multithreading

[ Pregleda: 3142 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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