[ nenadus @ 27.10.2007. 21:26 ] @
Da li neko zna (ili je cuo za) neki design-pattern koji istovremeno garantuje thread-safety klase i omogucava da imamo vise od jedne instance klase (dakle Singleton otpada)?

Pozdrav,
Nenad.
[ NastyBoy @ 27.10.2007. 21:36 ] @
To shto si naveo ispunjava svaka klasa iz, recimo, std-a (thread-safe? check. Mozhe da se instancira kad god? check), i nema tu nikakvog pattern-a.
Shta tebi tachno treba?
[ kiklop74 @ 28.10.2007. 02:01 ] @
Thread safe singleton
http://www.codeproject.com/cpp/pdesingletontemplatenomfc.asp

A kao i uvek treba poceti od vikipedije:
http://en.wikipedia.org/wiki/Thread_safety
[ X Files @ 28.10.2007. 08:00 ] @
Možda si mislio na RAII (a to je u suštini ono što je rekao NastyBoy u vezi STL-a) ?
("The RAII technique is often used for controlling thread locks in multi-threaded applications.")

Imaš primer za "file".


Ili, nešto slično:
--- H ---
Code:

class NEKA_KLASA
{
   // ...
   CRITICAL_SECTION LogCriticalSection;
   // ...
};

--- H ---
Code:

class CSLock
{
public:
   LPCRITICAL_SECTION fcs;

   CSLock( LPCRITICAL_SECTION acs ) : fcs( acs )
   { if ( fcs ) EnterCriticalSection( fcs ); }

   ~CSLock()
   { if ( fcs ) LeaveCriticalSection( fcs ); }
};


--- CPP ---
Code:

void NEKA_KLASA::GoSendMessageToLog( string AEvent )
{
   CSLock lock( &LogCriticalSection );
   // ...
   // ... ovde je thread safe kod
   // ...
}
NEKA_KLASA::NEKA_KLASA() // konstruktor
{
   // ...
   InitializeCriticalSection( &LogCriticalSection );
   // ...
}
NEKA_KLASA::~NEKA_KLASA() // destruktor
{
   // ...
   DeleteCriticalSection( &LogCriticalSection );
   // ...
}




[Ovu poruku je menjao X Files dana 29.04.2008. u 08:08 GMT+1]