バイト配列Private Data as Byte()
があるとします。この配列はクラス内ではプライベートです。このクラスは、Data
に読み書きするための公開関数を提供します。WriteLock on Write?読む?または両方?
このクラスには複数のスレッドがアクセスできるため、このスレッドからの読み取りと書き込みは同時に行われません。
今のところ、問題を避けるためにSyncLockを使用しています。書き込み機能にSyncLock Data
を入れることはできますか、それとも読み取り機能にする必要がありますか?または両方?
私は、特定のコード例を念頭に置いていません。私は、書き込み関数のSyncLockが書き込みを最初にそれに排他的にアクセスさせるようにすると、読み取りと書き込みの両方の機能をロックすることに何らかの利益があるかどうか不思議です。
はい、これは私が避けたいものです。しかし、バイト配列に書き込むときに 'SyncLock'を使用している場合は、この問題はありませんか? – Brad
ロックに参加しているスレッドのみが保護されます。ロックしていないスレッドは半更新状態を見ることができます。 –
はい、できます。書き込み操作だけをロックし、読み取り操作をロックしない場合は、無効なデータを読み取っている可能性があります。それがこの投稿が言っていることです。 –