2017-02-02 6 views
0

Ich habe eine Frage über "rwlocks", insbesondere über "rwlockattr".Pthread: Wie genau arbeite ich rwlockattr

Ich habe eine verknüpfte Liste mit mehreren Threads arbeiten mit. Jedes Mitglied auf dieser Liste hat einen "Rwlock". Jetzt möchte ich eine Regel einrichten, um sicherzustellen, dass Threads, die auf eine Schreibsperre zugreifen wollen, eine höhere Priorität haben. Meine Absicht ist es zu verwenden

int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t * attr, Int Pref);

Also jetzt meine Frage; Muss ich einen "rwlockattr" für jeden "rwlock" in meiner verknüpften Liste initialisieren oder genügt es, einen globalen "rwlockattr" einzurichten, ihn zu initialisieren und die "PTHREAD_RWLOCK_PREFER_WRITER_NP" -Regel einzurichten?

Grüße

+0

Die einfache Erstellung eines globalen rwlockattr Objekts hat keinerlei Auswirkungen auf irgendetwas. Der Rest des Systems hat keine Möglichkeit, das Globale zu verwenden oder zu wissen, dass es existiert. Sie müssen die Attribute beim Initialisieren jedes Rwlocks verwenden. –

Antwort

1

Mit jedem rwlock dort mit ihm einige von Standardattributen zugeordnet ist. Für die pthread_rwlock_init() gehen Sie durch diese link, die Ihnen mehr Informationen geben wird, wie man rwlock benutzt.

Sie können Ihren rwlocks ein einzelnes Attribut zuweisen. Sie erstellen global ein einzelnes Attribut und weisen es Ihren Rwlocks zu, die die gleiche Natur haben.

Gehe durch this, um die Verwendung von pthread_rwlock zu verstehen.

In general Attributes are to decide the nature of your rwlock. 
+0

Ah ok nett thx, gibt es irgendeine Möglichkeit, diese Funktion in der Win32-Version von Pthread zu bekommen? Ich habe versucht, meinen Code von Unix zu Win32 zu übertragen, aber in der win32-Version von Pthread scheint keine Unterstützung dafür zu sein, ist das korrekt? – JNgoon

+0

Nein win32 unterstützt die pthread-Bibliothek nicht nativ. Für Win32 Pthreading-Unterstützung gehen Sie durch [this] (https://www.sourceware.org/pthreads-win32/) Link. –