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

INI klasa i multithreading

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

[ Pregleda: 971 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 133
81.93.74.*



Profil

icon INI klasa i multithreading20.08.2004. u 08:17

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

20.08.2004. u 08:17 

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


Profil

icon Re: INI klasa i multithreading20.08.2004. u 08:49
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
20.08.2004. u 08:49 

Dragi Tata

Član broj: 1958
Poruke: 3883
66.228.70.*

Sajt: www.novetehnologije.com


Profil

icon Re: INI klasa i multithreading20.08.2004. u 13:09
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
20.08.2004. u 13:09 

ljube
Ljubiša Knežević
Banjaluka

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



Profil

icon Re: INI klasa i multithreading21.08.2004. u 12:28
Hvala!


21.08.2004. u 12:28 

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

[ Pregleda: 971 | Odgovora: 3 ]

Postavi temu Odgovori

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