해결됨
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
_popCount에 관한 질문입니다.
지금 해당 코드에 대해서 4번째 의심하고있는 학생입니다. 찾아보니 유사한 질문이 있음에도 이해가 되질 않아 먼저 해당 글부터 링크 걸어두겠습니다.https://www.inflearn.com/questions/365349
_pendingList와 _popCount를 atomic으로 선언해서 사용하고 있는 상황인데
if (_popCount == 1)
{
// 여기부터
Node* node = _pendingList.exchange(nullptr);
// 이 사이에
if (--_popCount == 0)
{
DeleteNode(node);
}
else if (node)
{
ChainPendingNodeList(node);
}
delete oldHead;
저 주석 사이에 둘 이상의 스레드가 동시에 접근 할 수 있는 건가요?그리고 접근 할 수 있어도, 혹은 다른 함수에서(ChainPendingNodeList) _pendingList에 접근을 시도해도 exchange 연산을 통해 분리해내는데 둘 이상의 스레드가 동시에 같은 포인터를 잡고있는 상황이 있을 수 있나요?