이해한 내용이 맞는지 궁금합니다
392
작성한 질문수 14
데드락은 서로 락을 걸어버려 상대가 락을 풀때까지 하염없이 기다리는 상태
먼저 AccountManager에서 ProcessLogin이 먼저 실행이 되었다고 가정했을 때 lock_guard를 사용하여 ProcessLogin이 끝날 때까지 다른 쓰레드의 AccountManager 접근을 막아버린다. 그와 거의 동시에 UserManager의 ProcessSave도 실행이 되면서 ProcessSave를 실행하는 쓰레드가 다른 쓰레드의 접근을 막아버린다. 이 때 ProcessLogin에서 UserManager::Inst()->GetUser를 실행하면 다른 쓰레드에서 UserManager에서 접근하지 못하도록 락을 걸고 GetUser를 실행해야 하는데 먼저 ProcessSave에서 user lock을 걸었기 때문에 추가적인 락을 하지 못하게 된다.
또 GetAccount를 실행할 때도 ProcessLogin에서 먼저 account lock을 걸었기 때문에 GetAccount에서 lock_guard를 하지 못하고 멈춰서 다른 곳에서 account lock을 풀어줄 때까지 하염없이 기다리게 된다.
안녕하세요 강사님
이렇게 이해를 했는데 맞는지 궁금합니다!
답변 1
5
안녕하세요!
맞기는 하지만, [이해한 것이 맞는지~]는 질문 대상이 아닙니다!
왜냐하면 어차피 그것에 일일히 대답해줄 사람은 앞으로도 없기 때문이죠.
제가 기술 책을 읽으면서 사용하는 방법은,
이해한 것을 진리로 생각하고 일단은 납득하고 넘어가는 것인데요.
언젠가 그게 사실이 아니라서 틀리다면, 틀린대로 또 새로운 깨우침을 얻게 됩니다.
Memory Pool에서 오버플로우 질문입니다.
0
61
2
포토폴리오 및 진로 관련하여 고민입니다.
0
109
1
포토폴리오 관련 고민입니다.
0
59
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
80
2
성능 테스트 결과
0
101
2
게임 서버 Stateful, Stateless 진로 고민
0
118
1
WaitOnAddress와 Sleep의 차이 질문
0
81
1
궁금한거 있습니다.
0
79
2
JobTimer 구동 스레드
0
105
2
TryPop() 동작 관련 질문
0
79
1
로드맵 C#서버 C++서버 방향성 질문
0
145
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
71
1
생명주기를 위한 의도적 복사
0
83
2
락프리의 실무에서 사용 질문
0
138
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
99
2
mutex와 sleep 차이점
0
115
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
150
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
94
1
공부법 관련해서
0
181
2
MakeShared 함수 관련
0
112
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
142
2
운영체제관련 질문입니다
0
129
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
115
2
메모리 풀 질문있습니다.
0
121
1





