Как я могу увеличивать один uint8 atómicamente?

У Go есть библиотека atomic с методами AddInt32 и т.д. Но если я хочу увеличить один int8, uint8, int16 или uint16 atómaticamente: как я могу делать это?

Главным образом меня интересует самый работоспособный ответ, но если есть другая менее работоспособная форма, но более коротко, также интересует меня.

3
задан 02.01.2017, 17:51
0 ответов

В настоящее время не возможно реализовывать самое меньшее атомное увеличение целого числа в 32 бита, по крайней мере используя стандартный книжный магазин. Это имеет общее с формой, в которой осуществлены инструкции sync/atomic, они сделаны в сборщике в зависимости от архитектуры, которые работают с operandos 32 и 64 бит.

Чтобы сохранять любой тип атомной формы, они могут использоваться atomic.Value что снабжают функций Load() и Store(v) чтобы соглашаться на стоимость, 'защищенную' от атомной формы. Ты можешь видеть пример здесь

1
ответ дан 03.12.2019, 17:54

Теги

Похожие вопросы