나는이 루프의 일부는 계산의 측면에서 꽤 많이 사용하고 난 그냥 병렬를 사용하여 변경 기존의 구문변경 foreach 문은 Parallel.ForEach 이상한 버그
foreach(x in xs) {....}
를 사용하여 쓴 여러 루프가 구문은 다음과 같습니다.
Parallel.ForEach(x, xs => {...});
성능이 크게 향상되었습니다. 이제 제 질문은 이것입니다 : 병렬 멀티 쓰레딩을 사용하여 버그를 도입 했습니까? 스레드 안전성이 복잡하고 이상한 버그를 만들 수 있다고 읽었습니다. 나는 무엇에 대해 염려해야 하는가?
코드가 스레드로부터 안전한지 여부를 알지 못하고 루프를 변경하는 경우 * 염려해야합니다! * 코드가 병렬로 실행되므로 기본적으로 병렬 루프간에 데이터를 공유 할 수 없습니다 . –
@BrianRasmussen :하지 말아야 할 일의 예를 보여줄 수 있습니까? – frenchie
루프 동안 공유 데이터 읽기/쓰기. –