필자에게는 concurrentbag의 한 독자와 여러 독자가 있습니다.concurentbag를 다시 초기화하는 것이 안전합니까?
writer는 정기적으로 데이터베이스에서 concurrentbag의 전체 내용을 새로 고칩니다.
작가 스레드 내에서 다시 초기화하는 것이 안전합니까 (예 : = 새로운 concurrentbag)? 그렇지 않은 경우 모든 읽기 및 쓰기 중에 잠글 수있는 유일한 옵션이 있는데 이는 오히려이 점을 무시합니다. 나는 가방에 대해 한 번에 한 장씩 비울 수 없다. 왜냐하면 어떤 배설물을 읽다가 그 과정이 부분적 정보에 기반을 두게 될 것이기 때문이다.
감사합니다.
무엇이 당신의 걱정입니까? 일부 독자 스레드가'ConcurrentBag <>'의 한 인스턴스에서 읽기 작업을 시작한 다음 다른 인스턴스에서 동일한 읽기를 완료 할 수 있습니까? 아니면 스레드가 새 참조를 선택하지 않을까 두려워합니까? 어쩌면 당신은 '휘발성 (volatile)'필드를 원할 것입니다. –
답장을 보내 주셔서 감사합니다. Jeppe. 내 우려는 읽기 중에 재 초기화가 발생하고 예외가 발생한다는 것입니다. –
참조를 업데이트 할 때 .NET에서 원 자성입니다. 그 결과는 당연히 무작위입니다. 오래된 가방에서 얼마나 많은 물체가 소비되는지 정확히 예측할 수 없습니다. 그것이 받아 들일 수있는 행동이 될 수있는 방법을보기는 매우 어렵습니다. –