개체에 linq를 사용하고 .ToList 및 .ToArray 작업이 스레드를 차단하고 있음을 알았습니다. (성능 보고서에서 차단 된 시간을 봅니다.) GC가 tolist 또는 toarray를 호출 할 때 메모리를 할당하려고하기 때문입니다. 병렬 루프에서 linq을 사용하고 있으며 linq의 공유 콜렉션에 액세스하려고하기 때문에 이것은 나쁘다. 이 문제를 해결할 수있는 방법이 있나요?linq 개체 스레드를 차단할 것인가?
답변
ToList
또는 ToArray
을 호출하면 쿼리가 즉시 평가됩니다. 그러면 전체 컬렉션이 평가되고 쿼리 결과가 반환 될 때까지 호출 된 스레드가 차단됩니다.
두 가지 방법 중 하나를 호출하지 않고 직접 쿼리를 반복해야합니다. 결과를 스트리밍합니다 (다른 열정적 인 평가가 없다고 가정).
동시 작업이 필요한 경우 Task Parallel Library (TPL)을 살펴 보시기 바랍니다.
감사합니다. 당신이 제안한대로 반복합니다. 경합 시간은 다음과 같습니다 : -System.Linq.Enumerable.WhereSelectEnumerableIterator'2.MoveNext() - ConsoleApplication3.Module1._Lambda $ __ 7 (클래스 VB $ AnonymousType_0'2 <클래스 ConsoleApplication3.Module1/ClassA, 클래스 ConsoleApplication3. Module1/ClassB>, 클래스 ConsoleApplication3.Module1/ClassC) --- JIT_NewFast (struct CORINFO_CLASS_STRUCT_ *). 어떤 아이디어? – orange
마지막으로 나는 대답을 얻었다. 내가해야 할 유일한 일은 GC를 서버 모드로 바꾸는 것이다. – orange
- 1. glGetError가 스레드를 차단할 수 있습니까?
- 2. 안드로이드 (스칼라에서) : StackOverflowError는 언제 스레드를 시작할 것인가?
- 3. Linq 개체 - 개체 업데이트
- 4. EventWaitHandle.Set()에서 현재 스레드를 차단할 수있는 원인은 무엇입니까?
- 5. Crystal 보고서에 Linq 개체
- 6. LINQ 개체 : 빠른 아이디어?
- 7. Linq 액세스 개체 필드
- 8. ComboBox DataSource로 Linq 개체
- 9. 아파치는 장기 실행 페이지 요청 스레드를 죽일 것인가?
- 10. Spotlight NSMetadataQuery를 차단할 수 있습니까?
- 11. 쿼리 개체 패턴 대 LINQ
- 12. Linq/데이터 개체 모범 사례
- 13. vb.net - linq - 필터링 목록 개체
- 14. Linq : 속성을 기반으로 개체 선택
- 15. Linq 개체 일반 복제 메서드
- 16. DataGridView 행 클릭하여 Linq 개체
- 17. 재귀 비슷한 개체 선택 (LINQ)
- 18. Struts2 액션 - 테스트 할 것인가 말 것인가?
- 19. "+ ="는 재 할당 할 것인가 말 것인가?
- 20. LINQ to Entities를 사용하여 중첩 된 개체 목록으로 개체 만들기
- 21. LINQ, 사용자 지정 개체, serialization 및 개체 참조
- 22. "중첩 된 foreach"대 "lambda/linq 쿼리"성능 (LINQ- 개체)
- 23. LINQ 개체 내에서 LINQ to SQL 쿼리를 실행할 수 있습니까?
- 24. 스레드가 차단 된 경우. 동일한 프로세스 또는 전체 프로세스에서 다른 스레드를 차단할 수 있습니까?
- 25. 개체 배열에 대해 linq 쿼리를 수행 하시겠습니까?
- 26. 개체 및 문자열 배열을 참조하는 Linq 쿼리
- 27. LINQ ORM 데이터 개체 및 상속
- 28. LINQ to SQL - 새/더티 개체 추적
- 29. 집계 LINQ 쿼리의 Entity Framework 개체 제한
- 30. 개체 목록에서 중복 속성을 검색하는 LINQ 쿼리
당신이하고있는 것에 대한 구체적이고 구체적인 예가 있습니까? 특히 스레드를 사용하여 세부 사항을 이해하는 것이 중요합니다. –
또한 : 데이터가 얼마나 큰가 –
'병렬 루프에서 linq을 사용하고 있습니다': PLinq를 사용하고 계십니까? – phoog