Home » U++ Library support » U++ Core » Thread::ShutdownThreads not safe
Thread::ShutdownThreads not safe [message #26951] |
Sun, 13 June 2010 15:40 |
hojtsy
Messages: 241 Registered: January 2006 Location: Budapest, Hungary
|
Experienced Member |
|
|
Hi,
I think the implementation of Thread::ShutdownThreads() and Thread::IsShutdownThreads() is not thread-safe:
static Atomic sShutdown;
void Thread::ShutdownThreads()
{
AtomicInc(sShutdown);
while(sThreadCount)
Sleep(100);
AtomicDec(sShutdown);
}
bool Thread::IsShutdownThreads()
{
return sShutdown;
}
I believe that the correct implementation would be:
static volatile Atomic sShutdown = 0;
void Thread::ShutdownThreads()
{
AtomicInc(sShutdown);
while(AtomicRead(sThreadCount))
Sleep(100);
AtomicDec(sShutdown);
}
bool Thread::IsShutdownThreads()
{
return AtomicRead(sShutdown);
}
Could you please look into this, and fix if I am correct.
Thanks,
- Sandor
|
|
|
Goto Forum:
Current Time: Thu May 16 22:52:33 CEST 2024
Total time taken to generate the page: 0.01662 seconds
|