How to best study Threads/Locks/etc. and Real-Time Safety in general

Hey all,

I’m right now dealing with Threads and problems that come with them for the first time in my life.
More precisely, I’m writing an audio application, which needs to be running perfectly stable for a long time, which is why I chose to have my FFT running in a separate continuously.

I’ve implemented the basic FFT class and the thread, but now, after I had it running for quite some commits, I get the following error on 50% of my application starts (during the other 50% everything works fine):

OscValueTreeTest: ../nptl/pthread_mutex_lock.c:422: __pthread_mutex_lock_full: Assertion ``INTERNAL_SYSCALL_ERRNO (e, __err) != EDEADLK || (kind != PTHREAD_MUTEX_ERRORCHECK_NP && kind != PTHREAD_MUTEX_RECURSIVE_NP)' failed. `

To be honest, I don’t know what to do right now. I’ve a strong background on audio processing, but everything related to more computer science-like topics I’m self-taught.
While I’m happy to hear about possible fixes for this issue, I’d more like to ask, where to learn about this stuff.

So, can you recommend ressources about things like Threading, Real-Time Safety, Locks, Mutexes - basically everything, which helps me learning to write a stable, concurrent audio application? It can be JUCE-related or more general, everything welcome. Thanks!

Cheers,
Lukas

Fabian and Dave’s talks at ADC2019 are a good place to start IMHO:
Part 1: https://youtu.be/Q0vrQFyAdWI
Part 2: https://youtu.be/PoZAo2Vikbo

1 Like

Thank you, I’ll have a look!