I think that there might be an issue in the xbox360 port available in the stable version tbb30_20100406oss.
The xbox implementation of__TBB_load_with_acquire and __TBB_store_with_release use the tbb_machine.h generic implementation. It is based on volatile read and write, and a call to __TBB_release_consistency_helper.
According to the documentation about the xbox360 lockless programming http://msdn.microsoft.com/en-us/library/ee418650(VS.85).aspx, volatile read and write behave that way: "Reading and writing of volatile variables using Visual Studio C++ 2005 prevents CPU read/write reordering on Windows, but on Xbox 360, it only prevents compiler read/write reordering".
Also, __TBB_release_consistency_helper is defined as _ReadWriteBarrier in xbox360_ppc.h. According to the same documentation, this intrinsic prevents from compiler reordering.
So the acquire and release semantic of __TBB_load_with_acquire and __TBB_store_with_releaseare effective on the compiler side, thanks to the volatile keyword, but nothing prevents cpu reordering. According to the same documentation again, the __lwsync intrinsic should be used in that purpose.
So I think there is anerrorin __TBB_release_consistency_helper macro definition, where I would addor replace __lwsync.
Am I wrong?