mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 13:00:09 +01:00
util/queue: hold a lock when reading num_threads in util_queue_finish
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
bb111559f2
commit
b7317b6ce0
1 changed files with 3 additions and 3 deletions
|
|
@ -592,15 +592,15 @@ void
|
|||
util_queue_finish(struct util_queue *queue)
|
||||
{
|
||||
util_barrier barrier;
|
||||
struct util_queue_fence *fences = malloc(queue->num_threads * sizeof(*fences));
|
||||
|
||||
util_barrier_init(&barrier, queue->num_threads);
|
||||
struct util_queue_fence *fences;
|
||||
|
||||
/* If 2 threads were adding jobs for 2 different barries at the same time,
|
||||
* a deadlock would happen, because 1 barrier requires that all threads
|
||||
* wait for it exclusively.
|
||||
*/
|
||||
mtx_lock(&queue->finish_lock);
|
||||
fences = malloc(queue->num_threads * sizeof(*fences));
|
||||
util_barrier_init(&barrier, queue->num_threads);
|
||||
|
||||
for (unsigned i = 0; i < queue->num_threads; ++i) {
|
||||
util_queue_fence_init(&fences[i]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue