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++ MT-multithreading and servers » Use same variable in different threads
Re: Use same variable in different threads [message #30459 is a reply to message #30350] Sun, 02 January 2011 15:35 Go to previous messageGo to previous message
tojocky is currently offline  tojocky
Messages: 607
Registered: April 2008
Location: UK
Contributor

mirek wrote on Sat, 25 December 2010 21:45

ScopedLock is in U++ as Mutex::Lock.

For read/write access, please notice RWMutex (multiple readers, just one writer). It has 'scoped' RWMutex::ReadLock and RWMutex::WriteLock variants.

As for Atomic variables, its basic feature is that they can accessed and perform increments/decrements from multiple threads WITHOUT caring about mutexes or barriers.



Mirek,

You read my mind. RWMutex seems to be perfect.
Windows variant I see
1. a limitation: only LONG_MAX concurrent reads can be. if concurrent reads > LONG_MAX then result is undefined.
Linux variant is a kernel variant. I didn't found the source code and can't say the opinion.
2. If write in recursive mode by the same phread will wait to infinitely.

The linux version is more pretty realized according by this links source code:
http://www.jbox.dk/sanos/source/include/pthread.h.html
http://www.jbox.dk/sanos/source/lib/pthread/rwlock.c.html



 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: OpenMP
Next Topic: Different native pthread.h implementations
Goto Forum:
  


Current Time: Thu May 09 14:55:12 CEST 2024

Total time taken to generate the page: 0.02313 seconds