Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
do not wait for too small durations to avoid numerical instabilities
[simgrid.git] / src / xbt / xbt_queue.c
index 6a48254..d3bc436 100644 (file)
@@ -287,6 +287,11 @@ void xbt_queue_shift_timed(xbt_queue_t queue, void* const dst,double delay) {
     }
   }
 
+  if (xbt_dynar_length(queue->data) == 0) {
+     xbt_mutex_release(queue->mutex);
+     THROW1(timeout_error,0,"Timeout (%f) elapsed, but queue still empty",delay);
+  }
+   
   xbt_dynar_shift(queue->data,dst);
   xbt_cond_signal(queue->not_full);
   xbt_mutex_release(queue->mutex);