Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Неатомарные операции С++

Какие операции называются неатомарными? Если можно с примером.


Ответ

Грубо - которые могут оказаться прерванными другим потоком.
Примеры? Ну, например
if (a) { f(a); }
Пока вы считали a, которое равно true, и собрались выполнять f(a), другой поток уже сделал a равным false :)
Или даже такая экзотика - в одном потоке вы присваиваете значение переменной из двух слов. Первое слово записалось, прерывание, другой поток читает из памяти нечто полузаписанное. Работает, записывает что-то свое. Тут снова управление возвращается к первому потоку, и он дописывает вторую половину нашей переменной...

Комментариев нет:

Отправить комментарий