私の ASP.NET アプリケーションは、さまざまなデータ チャンクへのアクセスを提供します。各チャンクには 1 人以上のユーザーが同時にアクセスできるため、アプリは競合を防止する必要があります。
多くの検討の結果、オプティミスティック コンカレンシーはこのシナリオに最適なソリューションではないと考えており、現在、適切なオプションとしてロックを検討しています。
SyncLock
次のように a を使用して、すべてのリクエストを 1 つずつ簡単に処理できます。
新しいオブジェクトとしてのプライベート共有 AccessLock
SyncLock AccessLock ..Do some reading and writing here End Synclock
しかし、それはアプリケーションのスケーラビリティを大きく制限します。
そのため、データの特定の部分のみへのアクセスを何らかの方法でエンキューすることを考えています。たとえば、あるキューはデータの一部にアクセスするためのもので、別のキューはデータの別の部分にアクセスするためのものです。
すべてに対して 1 つのキューだけでなく、データの異なる部分に対して異なるキューを使用するように同期ロックをカスタマイズする方法はありますか? つまり、「SyncLock (「Group1」) や「SyncLock (「Group2」)」などを手動で指定できるようになるということです。