32:55초 질문 있습니다.
299
작성한 질문수 38
32:55초
28째줄 (jobtimer.cpp 궁금한게 있습니다.)
28번째 줄에 WRITE_LOCK 하기전에 중괄호를 쳤는데
어떤 상황에 의해 LOCK 잡은 곳(괄호)을 지나서
그 괄호 밖의 for문이 실행될 수 있다는 말인가요?
그래서 _distributing 으로 막는거라 이해 하면 되는건가요?
괄호가 없음 상관이 없을까요?
답변 1
1
멀티쓰레드 환경이라면 같은 함수를
여러 쓰레드가 막 동시에 호출할 수도 있는데요.
어떤 쓰레드에서 함수 흐름대로 쭉 실행해서 LOCK을 지나치게 아래부분을 실행하는데
다른 쓰레드가 동시에 실행되면 LOCK 관련 부분을 실행하고 있을 수 있겠죠.
전체 LOCK을 잡으면 이 문제는 해결되지만
대신 한 애가 실행할 때 다른 애들은 아예 실행을 못하고 대기하게 됩니다.
0
아 제가 궁금한점이 { } 괄호를 기준으로 Lock 잡히는 건지 lock 잡은 부분부터 --- 함수의 } 괄호가 보일때까지 잡힌건지
잘 모르겠어서 질문드렸네요. 찾아보니 {} 괄호기준(scope)으로 잡히는것 같은데 맞는가요?
아 해보니깐 괄호기준이 맞네요.,
2번 들으려고 계속 눈팅만 했더니...
void Add() {
{
lock_guard<mutex> guard(m);
for (int i = 0; i < 10; ++i) {
sum++;
cout << "a : " << sum << endl;
}
}
for (int i = 0; i < 20; ++i) {
sum++;
cout << "c : " << sum << endl;
}
}
void Sub() {
{
lock_guard<mutex> guard(m);
for (int i = 0; i < 10; ++i) {
sum--;
cout << "b : " << sum << endl;
}
}
}
해결되었습니다!!^^
컨텐츠 레이어 C++ vs C#
0
10
0
writeLock을 잡을때 꼭 empty 상태여야하는 이유?
0
31
2
Memory Pool에서 오버플로우 질문입니다.
0
70
2
포토폴리오 및 진로 관련하여 고민입니다.
0
125
1
포토폴리오 관련 고민입니다.
0
64
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
85
2
성능 테스트 결과
0
105
2
게임 서버 Stateful, Stateless 진로 고민
0
127
1
WaitOnAddress와 Sleep의 차이 질문
0
84
1
궁금한거 있습니다.
0
83
2
JobTimer 구동 스레드
0
107
2
TryPop() 동작 관련 질문
0
81
1
로드맵 C#서버 C++서버 방향성 질문
0
151
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
73
1
생명주기를 위한 의도적 복사
0
87
2
락프리의 실무에서 사용 질문
0
143
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
103
2
mutex와 sleep 차이점
0
119
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
156
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
97
1
공부법 관련해서
0
184
2
MakeShared 함수 관련
0
114
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
144
2
운영체제관련 질문입니다
0
132
1





