2017-02-09 2 views
2

Ich lerne gerade über Betriebssysteme und Nebenläufigkeit und ich bin mit der Verwendung von Pthreads in c beauftragt.Wie können Threads ID gleich sein?

Nach dem Versuch, PThreads zu verstehen und zu verwenden, gibt es ein paar Dinge, die ich nicht ganz verstehe.

Wenn ich zwei separate Pthreads (zwei Prozesse, nach meinem Verständnis) erstellen, wie können die beiden Threads gleich sein (pthread_equal)? Oder was bedeutet das?

Danke!

+0

Ein Thread ist kein Prozess. Ein Thread ist eine Aufgabeneinheit in einem Prozess, der für die Ausführung von Aufgaben zuständig ist. –

+0

Wenn also überprüft wird, ob zwei Threads gleich sind, prüft das, ob sie innerhalb desselben Prozesses kombiniert sind? –

+0

Lies dies: https://linux.die.net/man/3/pthread_equal –

Antwort

2

Wenn ich erstelle zwei separate pThreads (zwei Prozesse, mein Verständnis), ..

Nope. Threads sind keine Prozesse. (Threads können unter Verwendung von Prozessen unter der Haube implementiert werden - aber es ist immer noch ein Thread, was Benutzerprogramme betrifft und sollte sie als solche behandeln).

Wie können die beiden Threads gleich sein (pthread_equal)? Oder was bedeutet das?

Es heißt, es ist gleichen Faden und wird durch die pthread_equal() berichtet, ob Thread-IDs gegeben vergleicht (pthread_t) gleich sind. Ein direkter Vergleich mit == ist nicht möglich, da pthread_t ein undurchsichtiger Typ ist und die einzige Möglichkeit, Thread-IDs zu vergleichen, die Verwendung der API pthread_equal() ist.

Übrigens, zwei Threads in verschiedenen Prozesse können die gleiche ID (pthread_t) haben.

Verwandte Themen