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