2010-03-08 4 views
10

D2.0 클래스에는 "클래스 개체의 모니터에 대한 액세스 권한을 부여하는"__monitor 클래스 속성이 있습니다 (documentation). 나는 약간 주위를 검색하고 this 비트를 제외하고는 어떤 정보도 찾지 못했습니다. 그래서 : 모니터 란 무엇입니까? 하나의 모니터가 모두 synchronized member functions에 사용되는 이유는 무엇입니까? Java와 비슷한 멤버 함수를 동기화하는 데 사용되는 synchronization primitive입니까? 그리고 당신이 그것을 사용하지 않아도된다면/왜 유즈 케이스가 무엇입니까 __monitor 언어 def의 속성은 무엇입니까?D에서 클래스 모니터 란 무엇입니까?

답변

6

모니터는 자바처럼 모든 동기화 된 메소드가 동기화되는 느슨하게 초기화 된 객체입니다. Java와 달리 D는 시스템 프로그래밍 언어이며, 해킹이 필요한 경우에 대비해 하위 코드 세부 사항을 표시합니다. 그렇다고해도 인 경우 보통은 좋지 않습니다. 이를 통해 동작을 사용자 정의 할 수 있습니다. 예를 들어 클래스의 모니터 객체를 사용자 정의하거나 모니터를 소유하는 클래스와 모니터를 공유하는 core.sync.mutex을 사용할 수 있습니다.

+1

감사합니다. 그래서,'object.d'를 보면,이 모니터에 대한'Object.Monitor' (일명'IMonitor')라는 인터페이스를 볼 수 있습니다. 이것이 내가 구현해야하는 것입니까? 그리고'core.sync.mutex'를 보면, 샘플 사용법을 볼 수 있습니다. (주석에서'DMD를 사용하면 "o .__ monitor = & m_proxy"일 수 있습니다. "). 옳은? – stephan

+0

@stephan : 나는 잘 모르겠다. 나는 결코 전에 이것을 어지럽히 지 못했다. 그래서 나는 그것의 세부 사항을 모른다. – dsimcha

+0

뭔가 이상한 일을하지 않으면 모니터를 직접 구현하거나 설정하지 않아도됩니다. 나는 D에서 여러 가지 동기화 프리미티브를 몇 번 사용해 왔으며 결코 그런 종류의 작업을 수행 할 필요가 없었습니다. –

관련 문제