inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

SpinLock

compare_exchange_strong과 compare_exchange_weak

해결된 질문

1153

장인석

작성한 질문수 11

0

compare_exchange에 해당하는 두가지 함수가 있기에 궁금하여 해당 내용을 찾아보았지만 이해가 가지 않습니다.
https://cplusplus.com/reference/atomic/atomic/compare_exchange_strong/

Unlike compare_exchange_weak, this strong version is required to always return true when expected indeed compares equal to the contained object, not allowing spurious failures. However, on certain machines, and for certain algorithms that check this in a loop, compare_exchange_weak may lead to significantly better performance.

1) spurious failures? weak는 해당 오류가 어떻게 나올 수 있다는 걸까요?
2) weak와 strong을 선택하는 대표적인 기준은 무엇인가요?

 

c++ atomic MMORPG compare_exchange windows-server network

답변 1

2

Rookiss

1)
spurious wake(가짜 실패?)라고 연산을 완료하지 않았는데
함수가 리턴되는 경우가 종종 있다고
아주 전설의 유니콘처럼만 전해져오지만,
제가 실험했을 땐 그런 케이스를 본 적이 없습니다.
정말 0.0000000001%의 확률이라고 있다고 가정하면
while 문에서 CAS를 돌리는 식으로 코드를 작성하면 됩니다.

[다음은 C++ Concurrency In Action 에서 나온 내용입니다]


2)
임베디드 같은 극한의 환경까지 가지 않는 이상,
일반 서버 관점에서는 둘의 성능 차이가 아주 미미해
그냥 strong으로 사용하면 됩니다.

Memory Pool에서 오버플로우 질문입니다.

0

59

2

포토폴리오 및 진로 관련하여 고민입니다.

0

102

1

포토폴리오 관련 고민입니다.

0

56

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

79

2

성능 테스트 결과

0

98

2

게임 서버 Stateful, Stateless 진로 고민

0

115

1

WaitOnAddress와 Sleep의 차이 질문

0

79

1

궁금한거 있습니다.

0

79

2

JobTimer 구동 스레드

0

103

2

TryPop() 동작 관련 질문

0

78

1

로드맵 C#서버 C++서버 방향성 질문

0

143

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

70

1

생명주기를 위한 의도적 복사

0

81

2

락프리의 실무에서 사용 질문

0

137

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

98

2

mutex와 sleep 차이점

0

114

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

149

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

92

1

공부법 관련해서

0

180

2

MakeShared 함수 관련

0

111

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

140

2

운영체제관련 질문입니다

0

127

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

114

2

메모리 풀 질문있습니다.

0

120

1