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

보기: 19792|회답: 0

[출처] StringDictionary에서 SyncRoot의 사용

[링크 복사]
게시됨 2016. 11. 23. 오후 2:26:38 | | | |

C# 객체지향 프로그래밍은 사용자 친화적인 연산 클래스를 많이 제공합니다. 이 StringDictionary는 문자열을 키와 값으로 저장하는 데 특화된 클래스들의 집합입니다. 이 클래스의 의미는 다음과 같습니다: C#은 값 타입의 문자열이 꽤 널리 사용된다는 것을 알고 있으며, 다른 값 타입도 대응하는 문자열 타입으로 변환할 수 있습니다. 이것이 이 컬렉션의 의미입니다. 하지만 다른 컬렉션 객체를 사용해 대체할 수도 있지만, 한 가지 주목하세요. 만약 이것이 문자열 저장이라면, 메모리 손실을 줄이고 프로그램 실행 시간을 단축할 수 있습니다


SyncRoot는 StringDictionary 접근을 동기화하는 데 사용할 수 있습니다

솔직히 말해, 이것은 'lock' 개념입니다. 이를 테스트할 프로그램을 작성해 봅시다:

코드는 다음과 같습니다:



StringDictionary 사전에 데이터를 추가하기 위해 동시에 두 개의 스레드가 있습니다.

첫 번째 스레드와 두 번째 스레드 간의 실행 시간 차이는 1초로, 시간 차이를 넓히고 실행이 너무 빠르지 않도록 합니다.

스레드가 두 메서드로 이동한 것을 볼 수 있는데, 두 번째 데이터를 추가할 때 첫 번째 데이터가 추가될 때까지 기다렸으며, 추가 시간이 매우 빠릅니다.

아래에서는 이해하기 쉽게 다르게 작성하겠습니다:





3개의 스레드가 열리고 데이터가 추가되며, 이 3스레드는 거의 동시에 실행되지만, 데이터가 추가될 때마다 각각 10초 간격이 납니다.

요약하자면, 다중 스레드 접근이 가능할 때는 SyncRoot를 사용해 스레드 보안을 보장할 수 있습니다




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

Mail To:help@itsvse.com