Lock은 System.Threading.Monitor의 간접적 인 표현입니다. 모니터를 직접 사용하려는 경우 추가 이점을 얻을 수 있습니다. (기사를 읽었습니다. 항상 추가로 얻을 모니터를 사용하여 제안 benefits.But 이러한 혜택의 아무런 설명도) 당신이 lock
자신을을 제한 당신이 사용할 수 없습니다, 그래서 만약C# - System.Threading의 장점 스레드를 제어하는 모니터
답변
글쎄, lock
만, Monitor.Enter
및 Monitor.Exit
호출이 없다 Monitor.Wait
, Monitor.Pulse
등과 같은 유용한 기능이 있습니다. 그렇지 않으면을 수동으로 사용하는 대신 lock
을 사용하는 데 실제로 어떤 단점도 없습니다및 Monitor.Exit
및 lock
에는 try-finally 블록에 적절한 코드가 자동으로 삽입된다는 이점이 있습니다.
lock
문은 모니터 클래스의 Enter
및 Exit
메서드에 대한 구문 설탕입니다. 당신은 당신이 사용하려는 경우 직접 모니터를 사용 (적어도 내 지식)을 TryEnter 방법을 비 차단해야한다
lock(x) {
Monitor.Pulse(x);
Monitor.Wait(x);
}
다음과 같이 당신은 여전히 Pulse
및 Wait
을 사용할 수 있습니다
.
내가해야 할 단언에 동의하지 않습니다. 항상을 사용하십시오. Monitor
; lock
키워드는 제공하는 것을 수행 할 필요가있을 때 편리합니다.
Monitor 클래스는 모니터 동기 프리미티브 http://en.wikipedia.org/wiki/Monitor_%28synchronization%29을 구현합니다. 당신이 정말로 볼 수 있듯이 .Net/C# 아이디어, 그 널리 알려진 개념 - 모든 컴퓨팅 학위의 일부로 가르쳐. 임계 영역을 잠글 수있는 기능뿐만 아니라 주어진 인스턴스에 대한 내부 큐 구현을 제공하여 스레드간에 훨씬 복잡한 상호 작용을 가능하게합니다.
무엇을 사용해야하는지에 대한 대답은 일반적으로 작업을 수행하는 가장 간단한 방법인데, 90 %를 초과하는 경우에는 lock(sth){...}
구문을 사용하는 것이 가장 좋습니다.
- 1. 데몬 스레드를 제어하는 방법은 무엇입니까?
- 2. System.Threading의 사용 사례는 무엇입니까?
- 3. C# 파일/폴더 모니터
- 4. 키보드 입력을위한 C++, 모니터
- 5. 장점
- 6. 장점
- 7. Java : 장점 모음 채널 장점?
- 8. 디렉토리 모니터 용 C 프로그램
- 9. C#에서 HTTP 모니터 개발
- 10. C#에서 진행 모니터 구현
- 11. C# 스레드를 죽이는 방법?
- 12. 다른 프로세스의 실행을 제어하는 C#
- 13. jQueryUI의 장점
- 14. bmake의 장점
- 15. WTP의 장점
- 16. C 스레드에서 스레드를 병렬화하는 방법
- 17. C# 부모 스레드를 삭제하는 방법
- 18. 로컬 트래픽을 제외하고 C# 대역폭 모니터
- 19. C#에서 모니터 전원을 올바르게 끄려면 어떻게해야합니까?
- 20. C# 3.0 - 모니터 응용 프로그램 - 의장 -
- 21. C++을 통한 응용 프로그램 제어 모니터
- 22. C++의 작업 모니터 및 관리자
- 23. C++ 및 OpenGL의 다중 모니터 응용 프로그램
- 24. 는 클러킹을위한 스레드를 생성하고 다시 다른 스레드를
- 25. C 언어의 Unix 개념을 사용하는 디렉토리 모니터 코드
- 26. 모니터 변경
- 27. 모니터 켜기/끄기
- 28. C#의 스레드 동기화 (모니터 대기/펄스 사용)
- 29. 모니터 키 스트로크
- 30. 잠금, 모니터, 뮤텍스