평론.Net 병렬 계산의 데이터 병행
1. 데이터 병렬 2. 작업 병행 3. 병렬 Linq 4. 미 션 공장 5. 주의 사항
이번 에는 주로 여러분 에 게 데이터 병행 과 쓸데없는 말 을 해 드 리 겠 습 니 다.다음은 시작 하 겠 습 니 다.
데이터 병렬 이란 원래 집합 이나 배열 의 데 이 터 를 구분 한 후에 여러 개의 CPU 나 여러 개의 스 레 드 에 할당 하여 같은 작업 을 수행 하 는 것 을 말 합 니 다.net 에 있 는 System.Threading.Tasks 는 데이터 병렬 지원 류 를 제공 합 니 다.Parallel.For,Parallel.Foreach 는 우리 가 자주 사용 하 는 for 와 foreach 와 매우 비슷 합 니 다.스 레 드 대기 열 을 만 들 지 않 아 도 됩 니 다.기본 적 인 순환 에서 너 는 자 물 쇠 를 사용 할 필요 가 없다.이.net 들 이 당신 을 도와 처리 할 것 입 니 다.당신 은 당신 의 업무 에 만 관심 을 가 져 야 합 니 다. 그러면 Parallel.For 와 Parallel.Foreach 를 어떻게 사용 하 는 지 살 펴 보 겠 습 니 다.
• Parallel.간단 한 사용
Parallel.For(0, 100, i => {
dosameting()
});
위의 예 는 우리 가 자주 사용 하 는 for 순환 의 그림자 와 같 습 니까?Parallel.For 의 세 번 째 매개 변수 Action•list
Parallel.For<long>(0, listLength, () => 0, (j, loop, subsum) =>
{
subsum += lista[j];
return subsum;
}, (x) => Interlocked.Add(ref sum, x));
•현실 에서 도 순환 을 취소 해 야 하 는 경우 가 많다.예 를 들 어 당신 은 대열 에서 숫자 를 찾 습 니 다.그럼 Parallel.For 순환 을 어떻게 종료 합 니까?그 렇 죠?for 와 foreach 처럼 Break 키 워드 를 사용 하면 됩 니 다.답 은 부정 적 입 니 다.이것 은 break 구조 가 순환 에 효과 가 있 기 때문에 병행 순환 은 사실 하나의 방법 이지 순환 을 어떻게 취소 해 야 하 는 것 이 아니다.아래 의 예 를 보십시오.•간단 한 Parallel.ForEach 순환 Parallel.Foreach 순환 작업 방식 은 Parallel.For 순환 과 유사 합 니 다.시스템 환경 에 따라 원본 집합 을 구분 하고 여러 스 레 드 에서 작업 을 계획 합 니 다. 시스템 의 프로세서 가 많 을 수록 병렬 방법의 운행 속도 가 빠르다. 일부 소스 집합 에 대해 서 는 순서 순환 이 빠 를 수 있 으 며,구체 적 으로 소스 의 크기 와 실행 중인 작업 유형 에 달 려 있다.
Parallel.For<long>(0, listLength, () => 0, (j, loop, subsum) =>
{
if (subsum > 20000)
{
loop.Break();
}
subsum += lista[j];
return subsum;
}, (x) => Interlocked.Add(ref sum, x));
여러분 들 이 이곳 에서 foreach 의 그림 자 를 보 셨 는 지 모 르 겠 습 니 다.사실 위의 예 에서 Foreach 방법의 마지막 입력 매개 변 수 는 Action
Parallel.ForEach(lista, i => { dosameting(); });
•Parallel.For 와 for 성능 테스트 비교관련 코드 를 첨부 하여 여러분 께 참고 하도록 하 겠 습 니 다.
Parallel.ForEach<int, long>(lista, () => 0, (j, loop, subsum) =>
{
if (subsum > 20000)
{
loop.Break();
}
subsum += lista[j];
return subsum;
}, (x) => Interlocked.Add(ref sum, x));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenCL 병렬 계산 3 - 호스트 프로그래밍 데이터 전송 및 구분캐시 대상과 이미지 대상의 데이터 구조는cl 입니다.mem.캐시 개체를 생성할 때 매개변수 설명: clCreateBuffer(cl context context, cl mem flags options, size t s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.