많은 수의 개체 및 순차 읽기 작업을하고 있습니다. 이 줄에있는 대부분의 질문은 멀티 스레딩을 의미하는 것으로 나타났습니다.하지만 배포 가능한 라이브러리의 오용으로 인해 스레드 자체의 오류가 더 걱정됩니다.순차적으로 읽는 동안 수집 수정 금지
라이브러리의 시스템은 잠재적으로 많은 개체 모음을 관리하며 한 번에이 모음의 순차적 읽기를 수행하여 각 요소에 대한 작업을 수행합니다. 라이브러리 외부에서 확장 될 수있는 요소 구현에 따라 개체가 컬렉션에서 자신을 제거하려고 시도 할 수 있습니다.
나는 그것이 옵션이되고 싶지만 컬렉션이 순차적으로 읽혀질 때 이런 일이 발생하면 오류가 발생할 수 있습니다. 컬렉션을 읽는 동안 컬렉션의 내용을 잠그고 순차적 읽기가 끝난 후에 실행될 일정에 대한 제거 요청을 넣을 수 있기를 원합니다. 개체에 컬렉션에 대한 공용 액세스 권한이 없기 때문에 제거 요청이 시스템을 거쳐야합니다. isReading 플래그로 갈 수는 있지만 좀 더 우아한 구조가 있는지 궁금합니다.
C# 또는 .NET은이를 수행하는 도구를 제공합니까? 아마도 목록 내용을 잠그면 순차적으로 읽는 동안 제거 요청을 가로 챌 수 있습니까? 아니면이 시나리오에서 처음부터 그 동작을 구현해야합니까?
저는 SynchronizedCollection이 멀티 스레딩 동기화를 목표로하고 있으며 읽기 프로세스 중에 모든 스레드가 동일한 경우에 발생하는 오버 헤드가 너무 많다는 인상하에 있습니다. – user1658867