Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ Core » Thread::ShutdownThreads not safe
Re: Thread::ShutdownThreads not safe [message #26953 is a reply to message #26951] Sun, 13 June 2010 17:54 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 14267
Registered: November 2005
Ultimate Member
hojtsy wrote on Sun, 13 June 2010 09:40

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



Well, yeah, adding volatile is definitely a good idea.. AtomicRead... in fact, all CPUs I have ever studied have that equal to normal read (for Atomic values anyway), but I guess if we ever introduced it, we should be using it, right? Smile

(Patch applied).

Mirek
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: double equals nothing
Next Topic: DeXml() incomplete
Goto Forum:
  


Current Time: Thu Aug 28 11:18:54 CEST 2025

Total time taken to generate the page: 0.12097 seconds