안녕하세요, 스레딩을 어느 정도 필요로하는 프로그램을 리팩토링하는 중입니다. 그러나, 나는 스레딩에 대한 많은 사전 경험이 없으므로 여기에 도움이 필요한 간단한 질문이 있습니다.Thread Lock 객체가 필요합니까?
프로그램은 특정 파일 (각 관찰자는 다른 스레드에서 실행 됨)을 감시하고 변경 사항이 감지되면 Notify()
메서드 호출을 호출합니다. Notify()
메서드는 단순히 전자 메일을 보냅니다.
두 개 이상의 스레드가 동시에 변경을 감지하고 Notify()
을 동시에 호출하는 경우 문제가됩니까?
Notify()
은 여러 번 열리지 않는 파일에 액세스하지 않으므로 동시에 여러 스레드가 Notify()
을 호출하면 문제가 발생하지 않습니다. 그러나 나는 틀릴 수 있습니다.
내가 잘못하면 Notify()
으로 전화하기 전에 개체를 만들고 Lock(object)
을 사용하는 것이 가장 좋은 방법입니까? 여러 스레드가 액세스해야하는 경우
둘 다 동일한 개체를 사용하여 전자 메일을 보내는 경우 메일 보내기 개체가 여러 송신 작업의 스레드 안전성을 보장하는지 여부에 따라 잠글 필요가 있습니다. 별도의 객체가 있고 독립적으로 작동 할 수있는 경우 (전송 작업을 수행하기 위해 내부적으로 일부 공유 상태에 의존하지 않음) 잠글 필요가 없습니다. –