Вот сейчас разбираю реализацию rundown protection в WinXP и меня очень удивила реализация захвата rundown protection блока, исходный код здесь привести не могу, так что поясню на словах. Они там хотят инкрементировать переменную на 2 и вместо того чтобы сделать тупо InterlockedIncrement они делают InterlockedCompareExchangePointer в цикле до тех пор, пока им не удастся увелечить переменную на 2 (таким образом гарантируют атомарность операции). Вобщем, это всё даже не важно, вопрос у меня такой, а что быстрее работает InterlockedIncrement или InterlockedCompareExchangePointer ?
Increment быстрее конечно, это если идет увеличение на 1, однако там же неизвестно насколько нужно увеличить. Код (Text): NewValue = Value + EX_RUNDOWN_COUNT_INC * Count; тем более это же не просто инкремент, а идет еще атомарное сравнение со старым значением, не изменилось ли оно. имхо все понятно.
n0name, ага, я как этот пост написал через некоторое время допёт что там не просто инкремент, нужно ещё проверять не начался ли rundown в промежуток времени от присвоения Value значения счётчика и до Interlocked*. Вопрос закрыт.