Search

모니터, 락

class
운영체제
상태
완료
날짜
목차

모니터

한 번에 하나의 스레드만이 특정 코드 영역에 접근할 수 있도록 제한하는 메커니즘입니다. 모니터는 각 객체에 내장되어 있으며, 해당 객체에 대한 접근을 제어합니다.
모니터는, 락은 같은 프로세스 내에서 쓰레드간의 동기화에서만 사용할 수 있습니다. 여러 프로세스 간의 동기화엔 사용할 수 없습니다.

C#의 lock 키워드는 모니터를 기반으로 한 블록 동기화를 위한 간단한 방법을 제공합니다.
lock 구문은 지정된 객체에 대한 락을 획득하고, 블록의 실행이 완료되면 자동으로 락을 해제합니다. 이는 보다 안전하게 리소스에 대한 동시 접근을 관리하려는 경우 사용됩니다.
lock 키워드는 사실상 Monitor.EnterMonitor.Exit을 사용하는 것과 동일한 작업을 수행하지만, 예외가 발생할 경우에도 락을 안전하게 해제할 수 있도록 합니다.

C#에서의 락

C#에서 락 사용법은 간단하여 예시를 드는 것보다는 코드 스니펫을 첨부하겠습니다.
object lockObject = new object(); lock (lockObject) { // 공유 자원에 대한 접근 코드 }
C#
복사

모니터의 장단점

모니터의 장점

1.
간단한 사용 : 모니터는 객체 또는 메소드 단위로 동기화를 간편하게 할 수 있도록 설계되었습니다. 개발자는 복잡한 동기화 메커니즘을 직접 구현하지 않아도 되므로, 코드의 가독성과 유지 보수성이 향상됩니다.

모니터의 단점

1.
오용 가능성 : 모니터와 관련된 메소드(예: Wait(), Pulse(), PulseAll() 등)의 오용은 프로그램의 논리적 오류로 이어질 수 있습니다.