[ros-dev] Re: [ros-diffs] [gedmurphy] 19312: Improve stopping control of the service

Thomas Weidenmueller w3seek at reactos.com
Fri Nov 18 00:37:38 CET 2005


Ged Murphy wrote:
> Could you explain what you mean?
As you want to change the value of the variables which are used in a
multithreaded environment you need to used the Interlocked* functions to
ensure an atomic change in all environments (UP, MP, ...), and also to
make sure it's portable.

> Those variables are only modified within the base thread, all other
> threads just check the value and act upon it.
> Why would that not be thread safe?
You're assuming the code will only run on a x86 system. In fact, as long
as the variables are aligned properly it is an atomic operation. But
don't forget the other architectures and possibly upcoming technologies
based on x86 that could void this assumption.

I have to admit that the code wouldn't break, even in circumstances
where the operation wouldn't be atomic, but technically the code still
isn't thread-safe this way.

- Thomas


More information about the Ros-dev mailing list