2016-07-31 36 views

Antwort

3

Das zweite Argument von pthread_sigmask() konstant ist (const sigset_t *set) [was bedeutet, dass der Speicher durch set hingewiesen werden nicht geändert], so dass Sie eine einzelne erklären kann [möglicherweise global, um Ihre Meinung] Variable, ohne die Notwendigkeit, jede der Umsetzung Thread-Locking-Mechanismus während des Zugriffs auf es, wie es nicht geändert wird. Alle Threads lesen immer denselben [konsistenten] Wert aus.

Sie können so etwas wie erklären:

/* Global scope */ 
sigset_t g_set; 

Und es pthread_sigmask() passieren:

/* Assuming `g_set` is already properly set at this point and won't be modified in the future */ 
pthread_sigmask(how, &g_set, NULL); 
+1

Danke für die Antwort. Ich habe vergessen, die Parameter von pthread_sigmask nachzuschlagen und zu sehen, welche nicht konstant sind. Wie auch immer, nochmals vielen Dank für die Erinnerung. – falhumai

+0

@falhumai du bist willkommen :) – pah