Не пойму что с InterlockedCompareExchange
От: Syberia  
Дата: 09.01.14 11:36
Оценка: -1
Привет Всем,

Только недавно взялся за многопоточное программирование, и вот такой пример использования InterlockedCompareExchange у меня не работает:

// есть mAddBusy - volatile bool член класса, инициализируется конструктором в false

printf( "mAddBusy = %d\n", mAddBusy );
long result = InterlockedCompareExchange( (volatile long*)&mAddBusy, true, false );
printf( "mAddBusy=%d result=%d\n", mAddBusy, result );


Если mAddBusy равно false, значит interlocked должен вернуть 0, а mAddBusy должно стать true.

А выводит:

mAddBusy = 0
mAddBusy=0 result=16777216

Уже пару часов ковыряю и не пойму в чём дело. Кто нибудь сталкивался с подобным?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.