Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Продолжение старого архива (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/)
-   -   Atomic Lock (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/atomic-lock-358603/)

Guest 30.09.2011 21:08

Atomic Lock
 
Добрый деньХочу сделать такую штуку на QAtomicКодC++ (Qt)QAtomicInt state;void AcquireRead( void ){while (true) { if (state >= 1024) { // старший бит взведен - данные недоступны DoNothing(); // холостой ход continue; // крутимся в while (рано или поздно др. нитка сбросит старший бит) } state.fetchAndAddAcquire(1); // атомарно увеличиваем счетчик (еще 1 нитка имеет доступ к данным) break; // доступ получен}}Очевидно что это не будет работать правильно, др. нитка может вклиниться и установить старший бит уже после того как он прочитанКодC++ (Qt) if (state >= 1024)


Часовой пояс GMT, время: 19:06.


© www.otvetnemail.ru - Форум вопросов и ответов.