인프런 커뮤니티 질문&답변

satie사티님의 프로필 이미지
satie사티

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Lock-Free Stack #3

Lock-Free Stack #3 compare_exchange_strong 사용이유

작성

·

201

0

void IncreaseHeadCount(CountedNodePtr& oldCounter)
{
    while (true)
    {
        CountedNodePtr newCounter = oldCounter;
        ++newCounter.externalCount;

        // 카운터가 정상적으로 1 증가할때까지 실행
        if (_head.compare_exchange_strong(oldCounter,newCounter))
        {
            oldCounter.externalCount = newCounter.externalCount;
            break;
        }
    }
}

 

while의 조건문에는 언제나 compare_exchange_weak를 사용했는데
while문 내부의 if에는 compare_exchange_strong을 사용한 이유가 궁금합니다.

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

임베디드가 아닌 대부분의 환경에선 strong, weak 무엇으로 해도 동일합니다.

satie사티님의 프로필 이미지
satie사티
질문자

특별한 의미는 없는거였군요
감사합니다

satie사티님의 프로필 이미지
satie사티

작성한 질문수

질문하기