самый быстрый способ атомарного сравнения двух целых чисел в C?

uint64_t n;      // two 32-bit integers

return ( (uint32_t)(n >> 32) == (uint32_t)n );

Какой самый быстрый способ атомарно сравнить 32 старших бита с 32 младшими битами uint64_t?

Я думаю, что одно ужасное решение - это сделать: получить спинлок, прочитать 32 LSB, прочитать 32 MSB, сравнить для получения результата, освободить спинлок, вернуть результат. Есть ли способ сделать это без необходимости брать спинлок?

9
задан brooksbp 26 June 2011 в 06:22
поделиться