좋아, 그래서 나는이 회사에 왔는데, 그 소프트웨어는 근해에서, 더 이상 존재하지 않는 실재물에서 되 불러 냈다. 우리 모두는 훈련을 알고 있습니다.Entity Framework 응용 프로그램이 멀티 스레드인지 어떻게 알 수 있습니까?
너트와 볼트를 보면서 '잠금'키워드를 발견했습니다. 인터넷 검색, Entity Framework에서 멀티 스레딩을 지원하지 않습니다.
내 질문은 : 응용 프로그램이 여러 스레드에서 실행하려고하는 것을 어떻게 확신 할 수 있습니까? '잠금'키워드의 존재가 충분한가요?
감사합니다.
'은 MSDN documenation 따라, [로크 (http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx) 키워드는 하나 개의 스레드가 다른 스레드의 상태 코드 임계 영역을 입력하지 않는다고 보장 중요한 부분에 있습니다. 다른 스레드가 잠긴 코드를 입력하려고하면 객체가 해제 될 때까지 블록을 기다립니다. '실행하지 않아도 여러 스레드를 실행중인 것은 아닙니다. –
저는 EF에서 멀티 스레딩을 자주 사용합니다. 예를 들어 업데이트 할 직원 목록이있을 수 있으므로 각 직원마다 스레드를 스핀하여 변경 사항을 채 웁니다. EF 자체는 누가 그것을 언제 부르는지 신경 쓰지 않습니다. 내 상황에서; 나는 본질적으로 "전체적으로 포함 된 작품을 다른 활동에 영향을 미치지 않으면 서 스레드로 분리 할 수있다"는 작업 단위 패턴을 알면 문제가 발생하지 않도록 항상주의해야합니다. 개인적으로 EF와 함께 LOCK을 사용하지 않습니다. –
좋은 대안은 응용 프로그램에서 생성 된 관리되는 스레드를 계산하거나 열거하는 것입니다. 1보다 크면 다중 스레드가되지만 아무도 프로그램 방식으로 실행할 수있는 솔루션을 찾을 수없는 것 같습니다. 자세한 내용은 [어떻게 C#의 모든 관리되는 스레드를 열거 할 수 있습니까?] (http://stackoverflow.com/questions/466799/how-can-i-enumerate-all-managed-threads-in-c)를 확인하십시오. –