Вы можете думать об этом как о структуре данных, которая позволяет любому количеству читателей или одному писателю. То есть любое количество потоков может считывать структуру данных, но поток, который записывает в структуру данных, нуждается в монопольном доступе.
В вашем случае вы можете использовать любое количество «обычных» потоков или один поток, который требует монопольного доступа.
.NET имеет классы ReaderWriterLock
и ReaderWriterLockSlim
, которые вы можете использовать для реализации этого типа совместного использования. К сожалению, ни один из этих классов не доступен на xbox.
Однако можно реализовать блокировку чтения / записи из комбинации объектов Monitor
и ManualResetEvent
. У меня нет примера C # (зачем мне, так как у меня есть доступ к нативным объектам?), Но есть простая реализация Win32 , которую не очень сложно портировать.