inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

곰책으로 쉽게 배우는 최소한의 운영체제론

멀티스레딩과 동기화 기본

레이스 컨디션 문제

해결된 질문

207

sjn0125

작성한 질문수 3

0

보여주신 실행 코드를 볼 때 결국 수정한 코드에서 쓰레드 종료 순서만 나름 올바르게 했지. 결국에는 race condition 문제는 해결 못한 거 아닌가요

운영체제

답변 2

0

널널한 개발자

어느 정도 수준까지로 따지느냐에 달린 것 같습니다. 캐싱 문제까지 고려한다면 각 변수에 대해 인터락을 걸어줘야 할 수 있습니다. 특히 단순 플래그 변수나 정수형 변수에 대한 값만 생각한다면 사실상 레이스 컨디션이 발생하기는 어렵습니다. 그러나 포인터를 다루는 경우라면 이야기가 달라질 수 있습니다. 특히 Lock-free 구조를 생각해야 한다면 인터락 이슈는 필수로 등장해야 하겠습니다. 감사합니다. 😄

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

sjn0125님께서 질문하신 “레이스 컨디션” 문제에 대한 이해를 돕기 위해 관련된 기존 답변을 찾아보았습니다. 레이스 컨디션은 여러 스레드가 공유 자원에 동시에 접근하면서 발생할 수 있는 문제인데, 이를 피하기 위해서는 스레드 간의 동기화가 필수적입니다.

아래 링크를 통해 코드를 통해 발생할 수 있는 레이스 컨디션의 원인과 해결 방법에 대한 설명을 확인할 수 있습니다. 질문하신 내용과 유사한 문제를 다룬 기존 질문과 답변으로 많은 도움이 될 것이라 생각합니다:

추가적인 정보로, 레이스 컨디션을 해결하기 위해서는 ‘뮤텍스’, ‘세마포어’, 또는 ‘CRITICAL_SECTION’ 같은 동기화 객체를 사용해 스레드 사이의 실행 순서를 관리하는 방법이 있습니다. 이렇게 하면 여러 스레드가 동시에 같은 데이터를 변경하려고 할 때 충돌이 발생하지 않도록 할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

32bit app에서 vms 4gb 설명에 대한 질문입니다.

0

77

2

스레드 종료 순서

0

149

1

제가 이해한게 맞는지 궁금합니다. (비디오 카드에 output)

0

228

2

플랫폼 bit관련 질문입니다

0

153

3

백그라운드 스케쥴링관련 질문입니다.

0

165

2

ready queue에 있던 프로세스들이 sleep이나 suspend되는 게 가능한가요?

0

249

2

IPC는 곧..?

0

358

2

interrupt와 DirectX 질문

0

403

2

공유자원과 임계구역

0

318

2

DMA와 고성능 소켓관련 질문입니다.

0

294

3

2강 DMA와 고성능 소켓 질문

0

419

3

I/O 관리자, 메모리 매니저 사용 이유

0

292

2

*pszResult =A; 포인터 사용 부분에 대한 질문입니다.

0

199

1

교착상태와 게임이 튕기는 현상

0

218

1

멀티스레딩

0

409

2

자료구조 공부

0

419

2

윈도우 레지스트리 질문

0

261

1

파일시스템과 가상메모리

0

341

1

Page fault 메시지가 나오면 스왑 인, 스왑 아웃은 일어나지 않는 건가요?

0

257

1

가상 주소, 절대 주소 부분이 헷갈립니다.

0

339

2

운영체제 스레드 공부 중 궁금한 점 있습니다.

0

354

3

직업 관련 질문

0

326

1

페이징 기법의 주소 변환

0

299

2

PCB에 들어있는 정보

0

458

1