• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: scheduling a block from a render callback
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: scheduling a block from a render callback


  • Subject: Re: scheduling a block from a render callback
  • From: Paul Davis <email@hidden>
  • Date: Tue, 07 Jan 2014 21:01:55 -0500




On Tue, Jan 7, 2014 at 8:44 PM, Lucas Ives <email@hidden> wrote:
Hey all,

In a nutshell: from my audio render callback I'd like to trigger work,
on demand, on another thread. What's the preferred way to do this sort
of thing?

Specifically:  after I've rendered a particular audio frame, I'd like to fire
a completion block.  dispatch_async() seems like an obvious way to do
this, but per Apple anything in the BSD layer or anything that may take
a lock -- I believe GCD is a yes on both counts --  is off limits in the
real-time callback.

I could pass data through a lock-free pipe back to another thread and
poll its existence, but my blocks have the property that they both need
to fire as soon as possible and also are used (relatively)
infrequently... so it seems like a waste to be constantly polling for
them using NSTimer or the like.

the darwin kernel (like most (but not all) POSIX style kernels) does not offer any guaranteed realtime safe methods of signalling one thread from another.

you are therefore left to decide which of the "bad" solutions is least bad.

among the options:

    - write a single byte to a POSIX FIFO that is being poll/select-watched by the other thread
    - use a semaphore
    - use a Mach Port

these all have various advantages and disadvantages. they will all work. none are guaranteed RT-safe.
 
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >scheduling a block from a render callback (From: Lucas Ives <email@hidden>)

  • Prev by Date: scheduling a block from a render callback
  • Next by Date: Re: scheduling a block from a render callback
  • Previous by thread: scheduling a block from a render callback
  • Next by thread: Re: scheduling a block from a render callback
  • Index(es):
    • Date
    • Thread