Re[2]: О lock-free алгоритмах (+бонус)
От: remark Россия http://www.1024cores.net/
Дата: 25.04.11 06:47
Оценка:
Здравствуйте, pif_pif, Вы писали:

_>Есть подозрение, что этот алгоритм не свободет от data race. Т.е. между этой строкой

_> intptr_t dif = (intptr_t)seq — (intptr_t)pos;
_>и этой проверкой
_> if (dif == 0)
_>значение pos может быть изменено в другом потоке, и проверка будет не валидной.

Тогда последующий CAS не сработает.

_> Intel Parallel Inspector это подтверждает:

_>ID Description Problem Source Function Module State
_>X7 Read Data race lockfree.cpp:24 load lockfree.exe Not fixed
_>X9 Write Data race lockfree.cpp:41 store lockfree.exe Not fixed
_>X6 Write Data race lockfree.cpp:48 compare_exchange_weak lockfree.exe Not fixed
_>X8 Allocation site Data race newaop.cpp:7 new[] lockfree.exe Information


Inspector не умеет проверять такой код.


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