Was ist ein Thread unter Linux?

青灯夜游
Freigeben: 2021-11-26 11:02:27
Original
2723 Leute haben es durchsucht

Unter Linux bezieht sich Thread auf eine Ausführungsroute innerhalb eines Programms, also auf eine Steuerungssequenz innerhalb eines Prozesses. Alle Prozesse verfügen über mindestens einen Ausführungsthread. Thread ist die kleinste Einheit der Programmausführung. Threads teilen Prozessdaten, verfügen aber auch über einen eigenen Teil der Daten.

Was ist ein Thread unter Linux?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Das Konzept der Linux-Threads

Was ist ein Thread?

  • Eine Ausführungsroute in einem Programm wird als Thread bezeichnet. Eine genauere Definition lautet: Ein Thread ist „eine Steuersequenz innerhalb eines Prozesses“.
  • Jeder Prozess hat mindestens einen Ausführungsthread.

Prozess und Thread

  • Prozess ist die Grundeinheit der Ressourcenzuweisung und des Wettbewerbs.
  • Thread ist die kleinste Einheit der Programmausführung
  • Thread-ID
  • Eine Reihe von Registern: IP, PSW, Stapelzeiger
  • Stack
  • Errno
  • Signalstatus
  • Priorität

Linux 线程的概念和使用

Der Unterschied zwischen Fork und dem Erstellen eines neuen Threads

Wenn ein Prozess einen Fork ausführt, wird beim Aufruf eine neue Kopie des Prozesses erstellt. Der neue Prozess verfügt über eigene Variablen und eine eigene PID. Die Laufzeit dieses neuen Prozesses ist unabhängig; er wird nahezu unabhängig von dem Prozess ausgeführt, der ihn erstellt hat.

    Beim Erstellen eines neuen Threads in einem Prozess verfügt der neue Ausführungsprozess über einen eigenen Stapel (und damit über eigene lokale Variablen), teilt jedoch globale Variablen, Dateideskriptoren und Signalhandler mit seinem Ersteller und dem aktuellen Arbeitsverzeichnis Status.
Vorteile von Threads

Die Kosten für die Erstellung eines neuen Threads sind viel geringer als für die Erstellung eines neuen Prozesses

    Im Vergleich zum Wechseln zwischen Prozessen erfordert der Wechsel zwischen Threads viel weniger Arbeit durch das Betriebssystem
  • Threads beanspruchen viel weniger Ressourcen als Prozesse
  • Können die parallele Anzahl von Multiprozessoren voll ausnutzen
  • Während das Programm auf das Ende langsamer E/A-Vorgänge wartet, kann es andere Rechenaufgaben ausführen
  • Rechenintensive Anwendungen der Reihe nach Um auf Multiprozessorsystemen ausgeführt zu werden, zerlegen Sie Berechnungen in mehrere Threads, um
  • I/O-intensive Anwendungen zu implementieren. Um das System zu verbessern, überlappen Sie I/O-Vorgänge. Threads können gleichzeitig auf verschiedene E/A-Vorgänge warten
Nachteile von Threads

Leistungsverlust

    Ein rechenintensiver Thread, der selten durch externe Ereignisse blockiert wird, kann oft nicht denselben Prozessor mit anderen teilen Threads. Wenn die Anzahl der rechenintensiven Threads die verfügbaren Prozessoren übersteigt, kann es zu einem großen Leistungsverlust kommen, wobei sich der Leistungsverlust auf die Hinzufügung von zusätzlichem Synchronisierungs- und Planungsaufwand bezieht, während die verfügbaren Ressourcen unverändert bleiben.
  • Reduzierte Robustheit
  • Das Schreiben von Multithreads erfordert umfassendere und tiefergehende Überlegungen. In einem Multithread-Programm besteht eine hohe Wahrscheinlichkeit von Problemen, die durch geringfügige Abweichungen bei der Zeitzuweisung oder der gemeinsamen Nutzung von Variablen verursacht werden, die nicht gemeinsam genutzt werden sollten. Mit anderen Worten: Es besteht ein Mangel an Schutz zwischen Threads.
  • Mangelnde Zugriffskontrolle
  • Der Prozess ist die grundlegende Granularität der Zugriffskontrolle. Der Aufruf bestimmter Betriebssystemfunktionen in einem Thread wirkt sich auf den gesamten Prozess aus.
  • Der Programmierschwierigkeitsgrad nimmt zu.
  • Das Schreiben und Debuggen eines Multithread-Programms ist viel schwieriger als ein Single-Thread-Programm Anwendungen. Der Hauptzeitunterschied zwischen diesen Modellen besteht darin, dass beim Wettbewerb um Systemressourcen (insbesondere CPU-Zeit) der Thread-Planungskonfliktbereich unterschiedlich ist
  • Prozesskonfliktbereich: Jeder Thread befindet sich im selben Prozess. Konkurrieren Sie um „geplante CPU-Zeit“ (aber). nicht direkt mit Threads in anderen Prozessen konkurrieren).
  • Systemkonfliktbereich: Threads konkurrieren direkt mit anderen Threads innerhalb des „Systembereichs“.

Verwandte Empfehlungen: „Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist ein Thread unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage