Re[4]: Lock-free array-based stack
От: remark Россия http://www.1024cores.net/
Дата: 01.03.10 15:19
Оценка:
Здравствуйте, remark, Вы писали:

R>Первый поток приходит в FreeMemory(), считывает какой-то current, потом успешно проверяет, что DequeueCount==0, потом засыпает.

R>Приходит второй поток и освобождает все элементы из freelist.
R>Далее эти же элементы выделяются повторно, добавляются в стек, удаляются из стека, и попадает опять во freelist.
R>Далее просыпается первый поток и успешно делает cas(&FreePtr, (TNode*)0, current), и удаляет все элементы, хотя DequeueCount сейчас может быть != 0. Возвращаемся к нашему разбитому корыту.

Не удивляйтесь, если Яндекс у вас иногда выдаёт 500 Internal Server Error

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.