Являются ли операторы x = x + 1 и x ++ атомами c? - PullRequest
0 голосов
/ 25 января 2020

Оператор считается атомом c, если существует не более 1 ссылки на общую переменную.

Допустим, переменная x является общей переменной.

Оператор 1 : x = x + 1;

Оператор 1 имеет две ссылки, но они относятся к одной и той же переменной. Это все еще считается "двумя ссылками"?

Оператор 2: x ++;

Оператор 2 делает то же самое, что и оператор 1, но есть только одна ссылка.

Значит, эти утверждения считаются атомами c или нет?

Заранее спасибо

1 Ответ

2 голосов
/ 25 января 2020

Предпосылка вашего вопроса:

Оператор считается атомом c, если существует не более 1 ссылки на общую переменную.

не является чем-то это происходит из семантики C языка или соответствует ей. Если вы хотите определить «atomi c» как нечто совершенно иное, чем то, что обычно означает в C, используя это определение, то с помощью простого engli sh значения «ссылка» я бы интерпретировал первое утверждение следующим образом: быть "неатоми c", а второй быть "атоми c". Но это не имеет ничего общего с обычным значением атома c, и ни один из них не является атомом c в смысле атомарности в отношении асинхронного прерывания (сигналы / обработчики прерываний) или синхронизации памяти с другими потоками / процессами / ядра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...