궁금한점 질문
280
작성한 질문수 10
void Push(const T& value)
{
Node* node = new Node(value);
node->next = _head;
while (_head.compare_exchange_weak(node->next, node) == false)
{
}
}
bool TryPop(T& value)
{
Node* oldHead = _head;
while (oldHead && _head.compare_exchange_weak(oldHead, oldHead->next) == false)
{
}
if (oldHead == nullptr)
return false;
value = oldHead->data;
return true;
}
안녕하세요 질문이 있습니다.
위의 코드에서
예를들어
t1 스레드가 Push를 하고
t2 스레드가 TryPop을 한다고 가정하면
push 에서도 _head를 참조하고 tryPop에서도 _head를 참조하니깐 TryPop에서 참조하고있는 popCount와 pendingList를 구해서 LockFree한다고 해도 운이 안좋아서 TryPop에서 _head를 메모리 할당 해제 해버리고 Push할때 그 할당 해제된 head로 node->next에 값을 대입하면 문제가 되지않나요?
답변 1
writeLock을 잡을때 꼭 empty 상태여야하는 이유?
0
67
2
Memory Pool에서 오버플로우 질문입니다.
0
98
2
포토폴리오 및 진로 관련하여 고민입니다.
0
181
1
포토폴리오 관련 고민입니다.
0
97
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
110
2
성능 테스트 결과
0
118
2
게임 서버 Stateful, Stateless 진로 고민
0
152
1
WaitOnAddress와 Sleep의 차이 질문
0
106
1
궁금한거 있습니다.
0
93
2
JobTimer 구동 스레드
0
119
2
TryPop() 동작 관련 질문
0
87
1
로드맵 C#서버 C++서버 방향성 질문
0
169
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
83
1
생명주기를 위한 의도적 복사
0
99
2
락프리의 실무에서 사용 질문
0
157
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
110
2
mutex와 sleep 차이점
0
133
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
169
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
102
1
공부법 관련해서
0
191
2
MakeShared 함수 관련
0
119
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
153
2
운영체제관련 질문입니다
0
147
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
125
2





