• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Event 방식

21.12.26 18:21 작성 조회수 280

0

AutoResetEvent 방식을 공부하다 궁금한게 생겨서 질문 남깁니다.

AutoResetEvent 방식은 강의에서 말씀하신것처럼 운영체제에게 이벤트를 요청하며 CPU 점유를 반환하고 대기하고 있다가, 이벤트가 처리되어 락을 얻을 수 있는 순간이 왔을때, 운영체제가 직접 아까 요청했던 그 쓰레드를 깨워서 실행하도록 하는 방식이라고 이해해도 되나요?

기존의 랜덤메타와 다른건, 이벤트를 등록해두고, 이벤트가 처리되어 본인이 실행될 수 있을때, 다른 스케쥴링을 다소 무시하고 먼저 본인이 새치기하듯 먼저 실행된다고 이해했는데 잘 이해했는지 궁금합니다.

그리고 이러한 방식이 기존의 2번 방식이었던 Sleep, Yield와 같은 랜덤메타 방식보다 좀더 성능적(속도)으로 느리다고 이해했는데 잘 이해했는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

이벤트는 특별히 Lock을 위해 존재하는 개념은 아닙니다.
봉화대처럼 그냥 어떤 특정 상황에 대한 신호를 주고,
반대편에서 그것을 감지하고 잠에서 깨어나는 정도인데요.


다른 스케쥴링을 다소 무시하고 먼저 본인이 새치기하듯 먼저 실행된다고 이해했는데

이건 아닙니다.

그리고 이러한 방식이 기존의 2번 방식이었던 Sleep, Yield와 같은 랜덤메타 방식보다 좀더 성능적(속도)으로 느리다고 이해했는데 잘 이해했는지 궁금합니다.

상황에 따라 다릅니다.
기내 비행기 예제로 다시 돌아가면.
1) 3분마다 제자리에 가서 한 번씩 화장실이 비었는지 오고 가며 확인하는 것
2) 승무원에게 부탁해 자리가 비면 와서 알려달라고 부탁하는 것
어느 쪽이 '빠른가'라고 한다면 사실 애매합니다.

우리 입장에선 1)은 허탕칠 수 있으니 불안하지만
단 번에 자리가 난다면 좋은 상황인 것이고
2)로 가기엔 승무원(OS) 자원을 소모하는 것이겠죠.