hbirr@svn.reactos.com wrote:
Use only one access to the spinlock in the assertion, because the value may change between two access' on smp machines.
You implementation is better, no doubt, but it wouldn't have mattered to read it twice or more. I mean, it's re-read again down in the InterlockedExchange call, there's a possibility it might have been changed in the meantime as well. But it really wouldn't matter ;)
Best Regards, Thomas
Thomas Weidenmueller schrieb:
hbirr@svn.reactos.com wrote:
Use only one access to the spinlock in the assertion, because the value may change between two access' on smp machines.
You implementation is better, no doubt, but it wouldn't have mattered to read it twice or more. I mean, it's re-read again down in the InterlockedExchange call, there's a possibility it might have been changed in the meantime as well. But it really wouldn't matter ;)
I must change this because my smp machine does crash in the early boot phase at this point. If someone releases the spinlock between the two comparisons the assertion gets a hit.
- Hartmut
Hartmut Birr wrote:
Thomas Weidenmueller schrieb:
I must change this because my smp machine does crash in the early boot phase at this point. If someone releases the spinlock between the two comparisons the assertion gets a hit.
- Hartmut
Hm, but wouldn't you then rather have to assert the previous value that InterlockedExchange returned? This way the value would've been read atomically only once instead of twice as it is at the moment.
Best Regards, Thomas