작성
·
279
0
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이더라도 다른 예약된 데이터를 처리할 작업이 있다면, 그에 맞게 코드를 추가해주어야 합니다.
추가적인 도움이 필요하시다면 언제든지 물어보세요. 좋은 하루 되세요!