Mutex fix
Both softIrqTask()
and channelDecodeTask()
block on event eventId_
. epicsEventMustTrigger()
will only wake up one of the threads waiting for the event.
There is no need to wait for the trigger event in channelDecodeTask()
. periodic->dispatchData()
will block if there is no data available in the buffer.
Also, take the terminateWorkersLock mutex before exiting the loop. Otherwise the mutex is unlocked twice and an error message is printed on the console.
Edited by Andreas Persson