스핀락 질문
487
작성한 질문수 1
CAS 의사코드를 설명하시면서
while(_locked)
{
}
_locked=true;
이 코드를 한번에 실행할 수 있다고 하셨는데 두 스레드가 동시에 if문에 진입한다면 동일한 결과를 가지지 않을까라는 생각에서 의사코드 자체를 SpinLock 클래스 안에 새로운 매서드로 만들어서 실행해보니 0이 출력되지 않았습니다.

어떤 원리로 두 코드가 한번에 실행되는지와 cp매서드를 어떻게 수정해서 compare_exchange_strong처럼 동작하게 할 수 있는 지 궁금합니다.
답변 1
0
의사 코드는 말 그대로 이해를 돕기 위한 코드이고
해당 코드를 우리가 유저 레벨에서 구현하면 당연히 작동하지 않습니다.
CPU에 그렇게 동작하는 특수 명령어가 있는 것이라
'원리'를 이해하기 보단 그냥 납득하고 넘어가셔야 하는 부분입니다.
(어차피 캐시 등 여러가지가 엮여 있으니 인텔 등 칩 제조사들이 신경 쓸 부분이겠죠)
0
빠르게 답변해주셔서 감사드립니다.
다른 문제인데 아래 에러는 어떻게 해결해야할까요? 단순한 코드인데 64비트 디버그 시에만 문제가 발생하네요



혹시나 해서 환경설정 소스코드를 다운받아서 쓰레드를 만들어도 동일한 오류가 발생하는데 이러면 c++설치가 잘못된걸까요?
writeLock을 잡을때 꼭 empty 상태여야하는 이유?
0
66
2
Memory Pool에서 오버플로우 질문입니다.
0
97
2
포토폴리오 및 진로 관련하여 고민입니다.
0
180
1
포토폴리오 관련 고민입니다.
0
97
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
109
2
성능 테스트 결과
0
118
2
게임 서버 Stateful, Stateless 진로 고민
0
151
1
WaitOnAddress와 Sleep의 차이 질문
0
105
1
궁금한거 있습니다.
0
93
2
JobTimer 구동 스레드
0
119
2
TryPop() 동작 관련 질문
0
87
1
로드맵 C#서버 C++서버 방향성 질문
0
167
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
83
1
생명주기를 위한 의도적 복사
0
97
2
락프리의 실무에서 사용 질문
0
157
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
110
2
mutex와 sleep 차이점
0
133
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
168
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
102
1
공부법 관련해서
0
190
2
MakeShared 함수 관련
0
119
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
153
2
운영체제관련 질문입니다
0
147
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
125
2





