강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của derekop20002437
derekop20002437

câu hỏi đã được viết

Hiểu đa luồng phụ trợ và phát triển cái nhìn sâu sắc

Đình chỉ có bảo vệ - Dừng lại!, Bắt đầu làm việc Hassan!

임계영역에 2개 이상의 스레드가 올 수 있는지요?

Đã giải quyết

Viết

·

373

0

안녕하세요

섹션4 코드를 보면 requests 라는 오브젝트 키를 사용해서

스레드1과 스레드2가 임계영역을 이용중인데

서버 함수를 보면 일이 없으면 lock 안에서 wait 즉 대기 상태로 빠집니다 그리고 클라 함수를 보면 일을 넣어주고 다른 스레드를 깨웁니다

여기서 의문인게 임계영역 안에서 대기중인 스레드와 실행중인 스레드가 공존할 수 있나요

 

https://www.inflearn.com/questions/1046075

제가 다른 수업에서 한 질문인데 답변에는 ai 답변이긴 하지만

그럴 수 없다고 들어서 질문드립니다

C#mysqlkafkaredismultithread

Câu trả lời 2

1

captainmomo님의 프로필 이미지
captainmomo
Người chia sẻ kiến thức

답변은 그럴수 없습니다. 임계영역에서는 반드시 한 스레드만 실행가능합니다.

코드를 보면 Wait에서 Blocking이 되기 때문에 DeadLock이라고 생각하실수도 있는데

Section4 코드에서 PulseAll과 Wait 함수 부분에 BreakPoint를 거시고 F10으로 한 스텝씩 확인해보시면 어떤 순서로 실행되는지 확인이 가능합니다.

 확인해보시면 Monitor.Wait이 호출되면 lock이 해제되는걸 알수 있습니다.

0

derekop20002437님의 프로필 이미지
derekop20002437
Người đặt câu hỏi

서버스레드가 임계영역 안에서 대기중인데 클라스레드가

Monitor.PulseAll(requests); 함수를 호출하려면

임계영역 안으로 들어와서 실행해야 한다는게 이해가 안가네요

선생님

Hình ảnh hồ sơ của derekop20002437
derekop20002437

câu hỏi đã được viết

Đặt câu hỏi