이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 19029|회답: 0

[출처] C#은 다중 스레드 환경에서 안전한 탐색 작업을 수행합니다

[링크 복사]
게시됨 2016. 10. 18. 오후 1:55:48 | | |

이 문서에서는 List를 연산 객체로 사용합니다
MSDN은 공식적으로 List의 스레드 안전성 명언을 제공합니다:
이 유형의 공개 정적 멤버는 스레드 안전합니다. 하지만 어떤 인스턴스 멤버도 스레드 안전을 보장할 수 없습니다.
컬렉션이 수정되지 않는 한, List는 동시에 여러 리더를 지원할 수 있습니다. 집합을 열거하는 것은 본질적으로 스레드 안전 프로세스가 아닙니다. 열거가 하나 이상의 쓰기 접근과 경쟁하는 드문 경우, 스레드를 안전하게 유지하는 유일한 방법은 열거 전체 시간 동안 컬렉션을 잠그는 것입니다. 읽기 및 쓰기 작업을 위해 여러 스레드가 컬렉션에 접근할 수 있도록 하려면 자체 동기화를 구현해야 합니다.
동기화를 안 하면?
한 스레드가 삭제 작업을 수행하고 다른 스레드가 탐색 작업을 수행하면, 탐색 과정에서 컬렉션이 수정되어 InvalidOperationException 예외가 나타나 다음과 같이 '컬렉션이 수정되었습니다'라는 메시지가 나타납니다. 열거 연산은 수행되지 않을 수 있습니다.
이동 보안을 보장하기 위한 동기화 방법
여기서 중요한 영역, 뮤텍스는 스레드 탐색 프로세스를 보호하기 위해 사용되며, 예시 코드는 다음과 같습니다:






이전의:중국 유니콤 공식 계정의 jssdk 서명 오류 해결
다음:asp.net MVC 전역 예외 처리 및 예외 로그
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com