Bonjour,
J'ai un problème sur tous les timeout de mon programme. J'ai plusieurs Thread qui devrait etre en WAIT, avec les fonctions :
-pthread_cond_timedwait
-sem_timedwait
-select
Aucunes de ces fonctions ne se bloquent, mon CPU est à 90%...Je ne comprend pas pourquoi, pourtant je respect les timeout attendu par les fonctions. Voici un petit bout de code sans rentrer dans les détails:
Les timeout ne sont pas respectés, les fonctions me retournent directement ETIMEDOUT, timeout ateint...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 //**************** struct timespec ts; clock_gettime (CLOCK_REALTIME, &ts); ts.tv_nsec += (timeout * 1000000); ... int ret = sem_timedwait(semaName,&ts); //**************** struct timespec ts; clock_gettime (CLOCK_REALTIME, &ts); ts.tv_nsec += (timeout * 1000000); ... int ret = pthread_cond_timedwait(&m_Condition,&m_Mutex,&ts); //**************** struct timeval ts; ts.tv_sec = 1; ts.tv_usec = 0; ... res = select(allSock+1, &fdread, &fdwrite, &fdexcep , &tv);
Es-ce que quelqu'un a déja eu ce problème? J'espère avoir avoir mit toutes les informations nécessaires. clock_gettime renvoi le temps système, y aurais t'il un problème de synchro avec cette fonction et les fonctions pthread_cond_timedwait et sem_timedwait ?
Partager