2017-11-22 23 views
3

Ich habe ein paar Fragen zu Pthread-Attributen, auf die ich nirgendwo anders Antworten finden konnte.Pthread Attributverwendung

  1. Wenn ich ein Attribut (thread/mutex) erstelle, kann ich es sofort freigeben, nachdem ich es einem Thread/Mutex zugewiesen habe, oder muss ich es behalten, bis der Thread fertig ist?
  2. Ist es sicher, Attribute (thread/mutex) für mehrere Threads/Mutexe wiederzuverwenden?

Antwort

4

Wenn Sie die POSIX-Spezifikation für pthread_mutexattr_init() lesen, heißt es:

Nachdem ein Mutex-Objekt-Attribute verwendet worden einen oder mehr mutexes zu initialisieren, jede Funktion die Attribute beeinflusst Objekt (einschließlich Vernichtung) sollte keinen Einfluss auf zuvor initialisierte Mutexe.

ähnlich, wenn auch nicht ganz so deutlich, die Spezifikation für pthread_attr_init() sagt:

Die resultierenden Attribute Objekt (möglicherweise durch Einstellen einzelne Attributwerte modifiziert), wenn sie von pthread_create() definiert die Attribute des Gewindes verwendet geschaffen . Ein einzelnes Attributobjekt kann in mehreren gleichzeitigen Aufrufen von pthread_create() verwendet werden.

und die Spezifikation von pthread_create() sagt:

Die pthread_create() Funktion soll einen neuen Thread erstellen, mit Attributen von attr angegeben, innerhalb eines Prozesses. Wenn attr NULL ist, sollten die Standardattribute verwendet werden. Wenn die von attr angegebenen Attribute später geändert werden, sind die Attribute des Threads davon nicht betroffen.

Ich denke, diese Zitate bedeuten, dass die Antworten sind:

  1. Ja, das Attribut Objekt zerstören kann, wenn es bequem ist. Die POSIX-Aufrufe erstellen eine Kopie der Attribute.

  2. Ja, es ist sicher, Attribute wieder zu verwenden.