[Bf-blender-cvs] [0f171d4] master: BLI_threads Queue: add `BLI_thread_queue_is_empty()`.

Bastien Montagne noreply at git.blender.org
Fri Jun 19 12:33:05 CEST 2015


Commit: 0f171d4a2599f9c8d1205e319de1024bf030f762
Author: Bastien Montagne
Date:   Fri Jun 19 12:30:21 2015 +0200
Branches: master
https://developer.blender.org/rB0f171d4a2599f9c8d1205e319de1024bf030f762

BLI_threads Queue: add `BLI_thread_queue_is_empty()`.

Avoids counting the whole queue when we only want to check whether it is empty or not!

===================================================================

M	source/blender/blenlib/BLI_threads.h
M	source/blender/blenlib/intern/threads.c

===================================================================

diff --git a/source/blender/blenlib/BLI_threads.h b/source/blender/blenlib/BLI_threads.h
index 18b8fea..b2ead15 100644
--- a/source/blender/blenlib/BLI_threads.h
+++ b/source/blender/blenlib/BLI_threads.h
@@ -175,6 +175,7 @@ void BLI_thread_queue_push(ThreadQueue *queue, void *work);
 void *BLI_thread_queue_pop(ThreadQueue *queue);
 void *BLI_thread_queue_pop_timeout(ThreadQueue *queue, int ms);
 int BLI_thread_queue_size(ThreadQueue *queue);
+bool BLI_thread_queue_is_empty(ThreadQueue *queue);
 
 void BLI_thread_queue_wait_finish(ThreadQueue *queue);
 void BLI_thread_queue_nowait(ThreadQueue *queue);
diff --git a/source/blender/blenlib/intern/threads.c b/source/blender/blenlib/intern/threads.c
index 5029595..73cadea 100644
--- a/source/blender/blenlib/intern/threads.c
+++ b/source/blender/blenlib/intern/threads.c
@@ -777,6 +777,17 @@ int BLI_thread_queue_size(ThreadQueue *queue)
 	return size;
 }
 
+bool BLI_thread_queue_is_empty(ThreadQueue *queue)
+{
+	bool is_empty;
+
+	pthread_mutex_lock(&queue->mutex);
+	is_empty = BLI_gsqueue_is_empty(queue->queue);
+	pthread_mutex_unlock(&queue->mutex);
+
+	return is_empty;
+}
+
 void BLI_thread_queue_nowait(ThreadQueue *queue)
 {
 	pthread_mutex_lock(&queue->mutex);




More information about the Bf-blender-cvs mailing list