Ich habe ein Szenario, bei dem auf eine Funktion (Codeblock) durch n verschiedene Callback-Funktionen zugegriffen wird. Wenn zur gleichen Zeit mehr als ein Callback die Funktion aufruft, muss ich einen Mutex in die Funktion einfügen, so dass nur ein Callback auf diesen gleichzeitig zugreifen kann und der andere Callback auf den ersten im kritischen Bereich warten muss . Ist das richtige Design? Gibt es alternative Designs? Gibt es eine Möglichkeit, den zweiten Rückruf nicht zu warten, während der erste Rückruf verarbeitet wird?Gleicher Codeblock, auf den von verschiedenen Callbacks gleichzeitig zugegriffen wird
0
A
Antwort
1
Hängt von dieser Funktion ab.
Ändert Shared Memory?
Verwendet es andere Funktionen, die Rennbedingungen zeigen?
Wenn die Antwort ja lautet, müssen Sie Sperren anwenden und die Prozesse synchronisieren.
Die Sperre vom Anfang bis zum Ende dieser Funktion ist wenig sinnvoll. Wenden Sie die Sperre nur vor und nach dem kritischen Abschnitt an (dh Codestück, an dem die gemeinsamen Daten aktualisiert (geschrieben) werden)
Verwandte Themen
- 1. SQLite-Synchronisation, wenn von Anwendungen auf verschiedenen Maschinen zugegriffen wird
- 2. Sitecore: Wie auf gleichen Feldnamen in verschiedenen Abschnitten zugegriffen wird
- 3. Wie bekomme ich den aktuellen pk, auf den zugegriffen wird?
- 4. Jquery Mobile Gleicher Fuß auf verschiedenen Seiten
- 5. Erstellen von Winkelmesser-Tests parallel auf verschiedenen URLs (gleicher Browser)
- 6. Jenkins Multi-Konfigurationsprojekt wird gleichzeitig auf verschiedenen Knoten ausgeführt
- 7. Kann auf DataFrame von verschiedenen SparkSessions zugegriffen werden?
- 8. Gleicher Funktionsname in verschiedenen Namespaces
- 9. Python-Callbacks auf verschiedenen Threads und die GIL
- 10. Sperren eines Objekts, auf das von mehreren Threads zugegriffen wird - Objective-C
- 11. JWT-Filter, auf den selbst bei erlaubten URLs zugegriffen wird
- 12. Speicherattribut für NSString kopieren, auf das von verschiedenen Threads aus zugegriffen wird
- 13. Wie auf den übergeordneten Kontext der Vorlage zugegriffen wird
- 14. Der beste Ansatz zur Verwendung in Java 6 für eine Liste, auf die gleichzeitig zugegriffen wird
- 15. Gleicher Ausgang mit verschiedenen Eingängen (neuronales Netzwerk)
- 16. Node.js C++ - Addon: Mehrere Callbacks von verschiedenen Thread
- 17. Gleicher SSH-Schlüssel zu verschiedenen Repositories
- 18. Callbacks in Node.js: Vergleich von zwei verschiedenen Code-Schnipsel
- 19. Wie wird auf Variablen im Stack zugegriffen?
- 20. Gleicher Rest Endpunkt mit verschiedenen PathVariable
- 21. gleicher Elementname mit verschiedenen komplexen Typen
- 22. Gleicher Code auf verschiedenen Hosts, einer funktioniert nicht
- 23. auf die cachedResponseForRequest-Methode wird nicht zugegriffen
- 24. Wie auf Objekteigenschaft in module.exports zugegriffen wird
- 25. xsl wird nicht von xml auf tomcat zugegriffen 6
- 26. Wie kann auf den Diktatwert zugegriffen werden?
- 27. Gleicher Schritt mit verschiedenen Schrittdefinitionen Serenity Cucumber
- 28. C# gleicher Namespace in verschiedenen Dateien
- 29. Callbacks auf SynchronizationContext
- 30. Wie auf Daten von berechneter Eigenschaft zugegriffen wird Vue.js
Diese Funktion wird als Wiedereintrittsfunktion bezeichnet und wird ordnungsgemäß ausgeführt, wenn sie alle lokalen Variablen oder Instanzvariablen verwendet müssen die Funktion oder Teile davon, die gemeinsame/globale Variablen verwenden, synchronisieren –