Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Freigabe von Lesesperren nach der Verarbeitung SubscriptionChangeList
Wenn Sie mit einer Aktualisierung beginnen, gibt es gemeinsam genutzte Speichersegmente für die festgeschriebenen Daten in anderen Partitionen für das vorherige Häkchen. Diese gemeinsam genutzten Speichersegmente werden möglicherweise von Lesern gesperrt. Eine App kann erst dann ein vollständiges Commit ausführen, wenn alle Leser die Sperren freigegeben haben. Zur Optimierung sollte eine App aufrufen, Api::ReleaseReadLeases()
um die Sperren nach der Verarbeitung von Api::SubscriptionChangelist
Elementen freizugeben. Dies reduziert Konflikte zum Commit-Zeitpunkt. Api::Commit()
veröffentlicht die Lese-Leases standardmäßig, aber es hat sich bewährt, sie nach der Verarbeitung von Abonnementaktualisierungen manuell freizugeben.
Beispiel
Result<void> ProcessSubscriptionChanges(Transaction& transaction) { WEAVERRUNTIME_TRY(ProcessSubscriptionChanges(transaction)); /** * Done processing Api::SubscriptionChangeList items. * Release read locks. */ WEAVERRUNTIME_EXPECT(Api::ReleaseReadLeases(transaction)); ... }