2016-05-28 15 views
1

Wird ein blockierter Thread den Prozess blockieren? Warum und wie? Danke an alle Experten für die Beantwortung.Wird ein blockierter Thread den Prozess blockieren? Warum und wie?

+1

Ein Prozess kann niemals "blockiert" werden. Es ist ein Betriebssystemobjekt, ein Container für ausführbaren Code und Daten. Der Code wird von Threads ausgeführt. Wenn der Thread, der sich um die Benutzerschnittstelle kümmert, Deadlocks oder den Wald verlässt und etwas anderes tut, als sich um die Benutzerschnittstelle zu kümmern, würden Sie wahrscheinlich zu dem Schluss kommen, dass der "Prozess blockiert" ist. –

+1

Der Begriff, den wir für Prozesse verwenden, ist typischerweise "aufgehängt" und nicht "blockiert". Ein Prozess kann hängen, weil alle Threads im Prozess blockiert sind, z. B. in einem Deadlock, aber er kann auch hängen bleiben, weil ein Thread in eine Endlosschleife gelangt, oder es besteht eine komplexere fortwährende Wiederholung mit mehreren Threads. –

Antwort

2

Ein Thread ist ein Ablauf der Ausführung durch den Prozesscode, mit seinem eigenen Programmzähler, Systemregister und Stack. Ein Faden wird auch als leichter Prozess bezeichnet. Threads bieten eine Möglichkeit, die Anwendungsleistung durch Parallelität zu verbessern. Threads stellen einen Software-Ansatz dar, um die Leistung des Betriebssystems zu verbessern, indem der Overhead-Thread reduziert wird, was einem klassischen Prozess entspricht.

Jeder Thread gehört zu genau einem Prozess und kein Thread kann außerhalb eines Prozesses existieren. Jeder Thread stellt einen separaten Steuerungsfluss dar.. Threads wurden erfolgreich bei der Implementierung von Netzwerkservern und Webservern verwendet. Sie bieten auch eine geeignete Grundlage für die parallele Ausführung von Anwendungen auf Multiprozessoren mit gemeinsamem Speicher.

Also, wie Sie vielleicht geraten haben, Nein! Ein Thread kann einen Prozess nicht blockieren.

3

Ein Prozess kann nicht blockiert werden, da das Konzept von "blockiert" nur für einen Thread der Ausführung gilt. Der einzige sinnvolle Sinn, in dem Sie sagen könnten, dass ein Prozess blockiert wurde, ist, wenn der Prozess nur einen Thread hatte und dieser Thread blockiert war.