Do fastpath if timeout is 0 on threadqueue_get
This commit is contained in:
@@ -126,7 +126,12 @@ int uc_thread_queue_get(struct uc_threadqueue *queue, const struct timespec *tim
|
||||
//another thread popped the remaining elment before we did
|
||||
queue->num_read_waiters++;
|
||||
if (timeout) {
|
||||
rc = pthread_cond_timedwait(&queue->read_cond, &queue->mutex, &abstimeout);
|
||||
//fastpath, check for a poll
|
||||
if(timeout->tv_sec == 0 && timeout->tv_nsec == 0) {
|
||||
rc = ETIMEDOUT;
|
||||
} else {
|
||||
rc = pthread_cond_timedwait(&queue->read_cond, &queue->mutex, &abstimeout);
|
||||
}
|
||||
} else {
|
||||
pthread_cond_wait(&queue->read_cond, &queue->mutex);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user