[PD] lock free problem

Miller Puckette msp at ucsd.edu
Tue Aug 23 19:46:30 CEST 2016


That's my understanding of it anyhow :)

BTW there's a series of online lectures from IRCAM about this:

http://repmus.ircam.fr/mutant/rtmseminars

Miller

On Tue, Aug 23, 2016 at 07:08:13PM +0200, Marco Matteo Markidis wrote:
> So, for a complete guaranteed situation a [readsf~]-like mechanics is a
> good solution?
> "Generate Pd messages from outside the main thread" means to generate
> something in Pd, i.e. with a multithreaded externals, but from a child
> thread?
> 
> Best,
> 
> Marco
> 
> 2016-08-23 18:54 GMT+02:00 Miller Puckette <msp at ucsd.edu>:
> 
> > Well, Pd itself only calls that lock from its main thread - so
> > theoretically
> > that call won't ever block.  But it's provided in case someone wants to
> > generate Pd messages from outside the main thread.  If you do that, Pd's
> > call to the lock can block - whether the time it's blocked can be bounded
> > depends on the behavior of  the other thread and the OS's ability to give
> > control quickly to a blocked thread when another thread releases the lock.
> > It's probably very hard to guarantee but probably works 99% of the time in
> > reasonable situations.
> >
> > cheers
> > Miller
> >
> > On Tue, Aug 23, 2016 at 06:26:16PM +0200, Marco Matteo Markidis wrote:
> > > Thank you Miller for your answer.
> > >
> > > This afternoon I just took a look of s_audio_paring.c/h.
> > > Do you think the lock in the scheduler can be a problem? It's meaningful
> > a
> > > lock free queue between audio and worker thread?
> > >
> > > Best,
> > > Marco
> > >
> > > 2016-08-23 18:13 GMT+02:00 Miller Puckette <msp at ucsd.edu>:
> > >
> > > > There's a good, byte-stream lock-free fifo in pd/src/s_audio_paring.c .
> > > > (It's borrowed from portaudio).  The difficulty there would be the
> > > > necessity
> > > > of encoding everything into byte streams.  Perhaps just sprintf/sscanf
> > will
> > > > do it for you.
> > > >
> > > > cheers
> > > > Miller
> > > >
> > > > On Tue, Aug 23, 2016 at 03:49:20PM +0200, Marco Matteo Markidis wrote:
> > > > > Dear all,
> > > > >
> > > > > I'm developing an external that has two threads, one audio thread
> > and one
> > > > > worker thread. The audio thread contains all usual stuff; while the
> > > > worker
> > > > > thread computes calculations (I need knn searches and so on for my
> > > > > resynthesis) and put them in a data structure. At the end of
> > > > calculations,
> > > > > the worker thread atomically CAS the data structure.
> > > > > Actually, I'm using a [readsf~]-like mechanics with pthread signal to
> > > > > communicate between threads.
> > > > >
> > > > > I would like to remove lock and use a lock free system. I don't know
> > if
> > > > it
> > > > > feasible. Moreover I don't know if it has some sense, because Pd
> > locks a
> > > > > mutex in scheduler and I don't know if a lock free implementation
> > could
> > > > be
> > > > > a right solution.
> > > > >
> > > > > In the case it could be a solution, I will start with a SPSC circular
> > > > queue
> > > > > and I will use atomic CAS to swap the data structure.
> > > > >
> > > > > Best regards,
> > > > >
> > > > > Marco
> > > >
> > > > > _______________________________________________
> > > > > Pd-list at lists.iem.at mailing list
> > > > > UNSUBSCRIBE and account-management -> https://lists.puredata.info/
> > > > listinfo/pd-list
> > > >
> > > >
> >
> > > _______________________________________________
> > > Pd-list at lists.iem.at mailing list
> > > UNSUBSCRIBE and account-management -> https://lists.puredata.info/
> > listinfo/pd-list
> >
> >

> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list




More information about the Pd-list mailing list