翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SubscriptionChangeList の処理後に読み取りロックを解除する
更新を開始すると、コミットされたデータ用の共有メモリセグメントが他のパーティションに前回のティックで残ります。これらの共有メモリセグメントはリーダーによってロックされている可能性があります。すべてのリーダーがロックを解除するまで、アプリケーションは完全にコミットできません。最適化のため、アプリケーションは Api::SubscriptionChangelist
アイテムを処理した後にロックを解除するための Api::ReleaseReadLeases()
呼び出しを行う必要があります。これにより、コミット時の競合が減少します。デフォルトでは Api::Commit()
は読み取りリースを解放しますが、サブスクリプションの更新を処理した後に手動でリリースするのがベストプラクティスです。
例
Result<void> ProcessSubscriptionChanges(Transaction& transaction) { WEAVERRUNTIME_TRY(ProcessSubscriptionChanges(transaction)); /** * Done processing Api::SubscriptionChangeList items. * Release read locks. */ WEAVERRUNTIME_EXPECT(Api::ReleaseReadLeases(transaction)); ... }