[ros-dev] Re: [ros-diffs] [gedmurphy] 19312: Improve stopping
control of the service
Thomas Weidenmueller
w3seek at reactos.com
Fri Nov 18 13:02:42 CET 2005
Murphy, Ged (Bolton) wrote:
> This function is new to me.
Now that you're writing multithreaded code it's about time to learn
about these functions ;)
> I'm just doing a bit of research on it now to better understand it, but
> could you just give me a bit of background of the difference between this,
> and using something like a mutex or CS, and why it's better in this
> scenario?
Of course you can use mutexes or critical sections, but for this purpose
interlocked operations are much more lightweight because with mutexes or
critical sections you'd have to protect the read operation as well. The
Interlocked* functions basically guarantee that a certain operation on a
variable shared by multiple threads is performed in an atomic matter. I
probably should mention that reads are always atomic, so reading a
variable with the size smaller or equal as the size of a general purpose
register does not need to be protected, writes however have to be protected.
You should read the following articles:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/interlocked_variable_access.asp
http://blogs.msdn.com/oldnewthing/archive/2004/09/15/229915.aspx
More information about the Ros-dev
mailing list