Атомарное присваивание указателю
От: Алексей.  
Дата: 27.10.04 16:34
Оценка:
Существует ли на уровне команд микропроцессора или ОС команда атомарного присваивания 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; // возвращается индикатор успеха/неуспеха операции
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.