2012-12-13 4 views
0

나는 멀티 쓰레딩의 이점을 누리는 장기 실행 태스크를 가지고있다.Linq 2 SQL 평행 처리

L2S 엔티티는 각 스레드에 의해 시간이 지남에 따라 추가되며 각 스레드는 해당 엔티티의 속성에 액세스해야합니다.

엔티티의 단일 인스턴스 요구 사항으로 인해 각 스레드에 대해 여러 데이터 인터페이스를 사용하기가 어렵습니다. 이러한 상황을 달성하기 위해 권장되는 방법이 있습니까?

Linq to SQL을 사용하기 전에 일련 번호의 병렬 처리가 반복 된 후 XML로 직렬화되었습니다. 이 작업은 정상적으로 수행되었지만 이후 데이터는 SQL에서 관계/쿼리를 필요로하므로 더 복잡해졌습니다.

일부 추가 정보 : 이 작업은 비슷한 프레임의 시퀀스를 찾기 위해 비디오 프레임을 분석합니다. 미디어, 프레임 및 샷 테이블이 있습니다. 여러 프레임 및 샷이있는 미디어 여러 프레임이있는 샷. 프레임 추출 및 비교는 프로세서 집약적 인 작업이며 멀티 스레딩의 이점을 제공합니다.

문제는 추출 된 각 프레임에 해당하는 문제입니다. 그것은 그것의 전후의 프레임들과 자기를 비교할 필요가 있습니다. 이전/이후 프레임은 별도의 스레드에서 올 것입니다. 마찬가지로, 처리중인 단일 Media 객체에 프레임과 샷을 삽입하면 여러 데이터 컨텍스트의 엔티티를 1로 결합 할 수 있습니다.

+0

이 개체에서 수행 할 작업은 무엇입니까? 어떤 방식으로 스레드간에 공유됩니까? – DHN

+0

엔티티가 싱글 톤입니까? 그렇지 않다면 확인하십시오. 그런 다음 임의의 수의 데이터 컨텍스트가 새 인스턴스를 만들지 않고도 액세스 할 수 있습니다. –

+0

엔티티는 여러 테이블의 데이터를 포함하는 복합 개체를 나타냅니다. 각 스레드는 테이블의 기존 데이터와 외부 소스 데이터를 기반으로 이러한 테이블에 항목을 추가합니다. –

답변

0

병렬 Linq 문제를 해결하는 대신 프로세스를 변경했습니다.

여러 스레드에서 동일한 항목 목록에 동시에 액세스하는 대신. 항목 목록을 분할하고 각 섹션에 스레드를 할당했습니다.

이렇게하면 각 스레드는 서로 부딪히지 않고도 자신의 목록에서 작동 할 수 있습니다. 그런 다음 목록 사이의 조인을 정리하는 마무리 방법을 작성했습니다.