Wie können Threads ihre Operation synchronisieren? Da sich die Threads innerhalb desselben Prozesses Ressourcen teilen, wie können sich die Threads so verhalten, dass sie andere Threads nicht beeinträchtigen? Bitte erklären Sie es in einer leicht verständlichen Sprache. Danke an alle Experten!Wie können Threads ihre Operation synchronisieren?
Antwort
Stellen Sie sich eine schmale Tür vor, an der die Menschen nacheinander die Tür passieren können. Manchmal, wenn zu viele Leute sind, bilden sie eine Schlange. Also richtig programmierte Threads - sie folgen Konventionen wie nicht versuchen, die Tür zu passieren, wenn sie besetzt ist. Schlecht programmierte Threads, ebenso wie schlecht gelaunte Leute, können die Konventionen ignorieren und eine Störung verursachen.
Die Hauptabstraktion in Multithreading-Programmierung ist eine Ressource - ein Bereich des Speichers, der höchstens zu einem Thread gehören kann. Threads verlangen nach Ressourcen, warten auf sie, besitzen sie - und können nur lesen oder schreiben in diesen Speicher, während sie schulden - und sie befreien.
Es gibt viele Synchronisierungsprimitive für den Umgang mit Ressourcen, am wichtigsten sind Semaphore, Monitore und blockierende Warteschlangen.
Programmierer, die ein Multithreading-Programm entwerfen möchten, sollten zuerst einen Plan erstellen, welche Art von Ressourcen verwendet werden und wie Threads sie austauschen würden. Wählen Sie dann aus, welche Standard-Synchronisationsfunktionen verwendet werden, oder entwickeln Sie neue Funktionen und programmieren Sie diese. Spezialisierte Einrichtungen werden normalerweise mit Monitoren hergestellt.
Das Unterrichten der Multithreading-Programmierung beginnt oft mit der Verwendung von Monitoren für die Thread-Interaktion. Das ist falsch. Zunächst sollte ein Student die Verwendung von Standardmitteln beherrschen - Semaphoren und blockierende Warteschlangen, die für 95% der Fälle ausreichen, und erst dann lernen, spezialisierte Einrichtungen mit Monitoren zu entwerfen.
- 1. Wie Sie Ihre MAMP-Installation auf mehrere Macs synchronisieren können
- 2. Synchronisieren von zwei Threads
- 3. ArrayList über zwei Threads synchronisieren
- 4. Synchronisieren von Threads - keine UI
- 5. Synchronisieren Sie Threads auf Artikel Basis
- 6. POSIX-Threads - DETACHED-Threads mit Bedingungsvariablen synchronisieren MEMORY LEAK
- 7. `volatile` zum Synchronisieren Variable zwischen Threads
- 8. Clojure idiomatic zum Synchronisieren zwischen Threads
- 9. Synchronisieren von Threads mit Bedingungsvariablen (Monitoren)
- 10. Synchronisieren von zwei Threads mit AutoResetEvent
- 11. Java: Synchronisieren von Threads auf mehreren Servern
- 12. Android Standard-Threads und ihre Verwendung
- 13. Google Drive PC-Anwendungsdateien synchronisieren ändert ihre Links
- 14. Der beste Weg, um zwei Threads miteinander zu synchronisieren
- 15. So synchronisieren Sie Threads beim Abfragen von Statusänderungen mit Boost
- 16. g ++ 4.8.1 C++ - Threads, std :: system_error - Operation nicht erlaubt?
- 17. Können Ruby-Threads beim Schreiben nicht kollidieren?
- 18. Können mehrere Threads auf dasselbe Objekt warten?
- 19. Können vorbereitete Anweisungen über Threads verteilt werden?
- 20. Synchronisieren von Threadpool
- 21. Sharepoint-Benutzer können ihre Workflowaufgaben nicht bearbeiten
- 22. SMF-Moderatoren können ihre Post-Anzahl ändern
- 23. Können Threads denselben Client-Socket verwenden?
- 24. Wie können Benutzer ihre Daten in verschiedene Datenbanken eingeben?
- 25. Wie können Sie Ihre Projekte versionieren und Releases verwalten?
- 26. Wie können Sie feststellen, ob Ihre MFC-Anwendung nicht reagiert?
- 27. Programmieren, wie Sie Ihren Mitarbeitern Ihre Idee zeigen können
- 28. Wie können Benutzer ihre eigenen Passwörter in Django ändern?
- 29. Wie können mehrere Threads im Sequenzdiagramm dargestellt werden?
- 30. Wie können Sie Threads im selben Prozess auflisten?
Diese Seite wird Ihnen helfen: https://en.wikipedia.org/wiki/Synchronization_%28computer_science%29#Thread_or_process_synchronization – user20160
Das hat geholfen! Vielen Dank :) – Anonymous