Привет Всем,
Только недавно взялся за многопоточное программирование, и вот такой пример использования 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
Уже пару часов ковыряю и не пойму в чём дело. Кто нибудь сталкивался с подобным?