질문있습니다
336
작성한 질문수 12
if (_popCount == 1) {
Node* node = _pendingList.exchange(nullptr);
if (--_popCount) {
DeleteNodes(node);
}
else if (node) {
ChainPendingNodeList(node);
}
delete oldHead;
}_popCount가 1인 상태가 나 혼자 삭제하고 있는 중이고 혼자 삭제하는 중이라면 삭제가 예약된 데이터들도 삭제한다고 이해를 했습니다. 삭제가 예약된 데이터들을 삭제를 할 수 있는지 체크하는 부분이 위에 있는 if(--popCount) 조건문으로 알고 있는데 여기서 --_popCount를 하면 _popCount가 0이 되어서 나 혼자 삭제하는 중이여도 다른 예약된 데이터들을 삭제를 할 수 없는거 아닌가요??
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. 답변드릴게요.
주어진 코드에서 --_popCount는 삭제 예약된 데이터가 여러 개인 경우에 대한 처리를 담당하는 부분입니다. _popCount 변수는 삭제 예약된 데이터의 개수를 나타내는 변수로, 초기 값은 예약된 데이터의 개수를 나타냅니다.
조건문 if (--_popCount)은 _popCount 값을 감소시킨 후, 감소한 값이 0이 아닌지를 확인하는 것입니다. 이렇게 처리한 이유는 _popCount가 0이 아닐 경우, 여전히 삭제 예약된 데이터가 남아있다는 의미이기 때문에 다른 예약된 데이터를 삭제하는 작업을 수행할 수 있습니다.
따라서 _popCount 값이 1일 때 --_popCount 연산을 통해 _popCount를 0으로 만든다면, 해당 조건문은 거짓이 되어 다음 else if 문이 실행되게 됩니다. 이렇게 되면 _popCount가 0이 되어도 삭제 예약된 데이터를 처리하는 작업이 가능해집니다.
결론적으로, _popCount가 1일 때 다른 예약된 데이터들을 삭제할 수 있는지 여부는 해당 코드 이후에서 처리되는 내용에 달려있습니다. _popCount 값이 0이더라도 다른 예약된 데이터를 처리할 작업이 있다면, 그에 맞게 코드를 추가해주어야 합니다.
추가적인 도움이 필요하시다면 언제든지 물어보세요. 좋은 하루 되세요!
Memory Pool에서 오버플로우 질문입니다.
0
64
2
포토폴리오 및 진로 관련하여 고민입니다.
0
114
1
포토폴리오 관련 고민입니다.
0
63
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
82
2
성능 테스트 결과
0
103
2
게임 서버 Stateful, Stateless 진로 고민
0
122
1
WaitOnAddress와 Sleep의 차이 질문
0
83
1
궁금한거 있습니다.
0
82
2
JobTimer 구동 스레드
0
107
2
TryPop() 동작 관련 질문
0
81
1
로드맵 C#서버 C++서버 방향성 질문
0
150
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
73
1
생명주기를 위한 의도적 복사
0
87
2
락프리의 실무에서 사용 질문
0
142
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
101
2
mutex와 sleep 차이점
0
118
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
153
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
96
1
공부법 관련해서
0
184
2
MakeShared 함수 관련
0
114
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
144
2
운영체제관련 질문입니다
0
131
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
118
2
메모리 풀 질문있습니다.
0
125
1





