Существует ли на уровне команд микропроцессора или ОС команда атомарного присваивания 32-битного значения по заданному адресу? Т.е. команда выполняющая следующую микропрограмму (код приведен на псевдокоде):
void * atomic_pointer_assignment ( void ** address, void * old_value, void * new_value )
{
lock ( address );
if ( *address == old_value ) // значение не изменено другим потоком
*address = new_value; // значит можно поменять значение указателя
void * return_value = *address;
unlock ( address );
return return_value; // возвращается индикатор успеха/неуспеха операции
}