Я хочу сохранить память, преобразовывая существующий 32-разрядный счетчик в 16-разрядный счетчик. Этот счетчик атомарно увеличивается/уменьшается. Если я это сделаю:Могу ли я атомарно увеличивать 16-разрядный счетчик на x86/x86_64?
- Какие инструкции я использую для atomic_inc (uint16_t x) на x86/x86_64?
- Является ли это надежным в многопроцессорных машинах x86/x86_64?
- Есть ли штраф за исполнение, заплаченный за любую из этих архитектур за это?
- Если да для (3), какова ожидаемая штрафная ставка исполнения?
Спасибо за ваши комментарии!
Если у вас много счетчиков (и это много, как в мегабайтах), то, похоже, очень много усилий, чтобы сэкономить 2 байта. Что такое * актуальная * проблема, которую вы пытаетесь решить здесь? –
Да, у меня есть * много * этих счетчиков в мегабайтах. Каждый такой счетчик представляет ожидающие операции в соответствующем блоке памяти. Когда счетчик опускается до нуля, я должен запустить еще одну операцию. – Sudhanshu
Возможный дубликат [Может num ++ быть атомарным для 'int num'?] (Https: // stackoverflow.com/questions/39393850/can-num-be-atomic-for-int-num) –