Semaphores need to have a unique name -- fixes #7341
On Windows (and OSX) semaphores are named. If the name matches an existing semaphore, it is re-used and not re-initialized. In case of multiple LV2-plugins each with a worker-thread this can lead to a deadlock.
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "ardour/worker.h"
|
||||
#include "pbd/error.h"
|
||||
#include "pbd/compose.h"
|
||||
|
||||
#include <glibmm/timer.h>
|
||||
|
||||
@@ -32,7 +33,7 @@ Worker::Worker(Workee* workee, uint32_t ring_size, bool threaded)
|
||||
, _requests(threaded ? new RingBuffer<uint8_t>(ring_size) : NULL)
|
||||
, _responses(new RingBuffer<uint8_t>(ring_size))
|
||||
, _response((uint8_t*)malloc(ring_size))
|
||||
, _sem("worker_semaphore", 0)
|
||||
, _sem(string_compose ("worker_semaphore%1", this).c_str(), 0)
|
||||
, _thread(NULL)
|
||||
, _exit(false)
|
||||
, _synchronous(!threaded)
|
||||
|
||||
Reference in New Issue
Block a user