bonjour

j'ai un petit souci avec mon mutex pthread qui se comporte pas comme j'aimerais

il me semblait que d'une certaine maniere pthread faisait une queue FIFO de tous les thread qui faisaient lock() sur un mutex deja locke, et qu'il les reveillait dans l'ordre dans lequels ils sont appelle lock(), et apparement c'est pas forcement le cas. Sur 2 machines j'ai 2 comportement different, ce qui me pose probleme c'est que sur l'une :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
while (true) {
   mutex.lock();
   ...
   mutex.unlock();
}
ne rend jamais la main a d'autres threads qui auraient appelle mutex.lock()


aurais-je mal initialise mon mutex ?
je l'initialise commee suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
pthread_mutex_t* lMutex = new pthread_mutex_t;
if(::pthread_mutex_init(lMutex, 0))
   throw Exception(eOtherError, "Mutex::Mutex() can't create!");