2013-03-26 8 views
6

Quando si inizializza staticamente un mutex ricorsiva, qual è la differenza traQual è la differenza tra PTHREAD_RECURSIVE_MUTEX_INITIALIZER e PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP?

static pthread_mutex_t foo_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; 

e

static pthread_mutex_t foo_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; 

e perché dovrei volere quello anziché l'altro?

+0

Sei sicuro che sia presente 'PTHREAD_RECURSIVE_MUTEX_INITIALIZER'? Non ho trovato nulla a riguardo ?? –

+0

In effetti, sul mio sistema Ubuntu Linux, il mio file '/ usr/include/pthread.h' non definisce la versione senza' _NP'. Ma qui per esempio, è definito: https://android.googlesource.com/platform/prebuilts/ndk/+/5b02cc4c4e80fd6a9ee30e0ad4642122e08a007b/android-ndk-r7/platforms/android-14/arch-x86/usr/include/pthread .h alla linea 46. –

+0

Bene, allora sembra essere dipendente dall'implementazione. –

risposta

6

"_NP" è un suggerimento per indicare che la funzione non è portatile. Per mantenere il suggerimento, è meglio usare la versione "_NP".

A parte ciò, sospetto che non ci siano differenze. Non sicuro al 100%, però.