[LAD] Inter thread Communication: Design Approach

Florian Paul Schmidt mista.tapas at gmx.net
Fri Sep 2 08:36:15 UTC 2011


On 09/01/2011 10:37 PM, Harry van Haaren wrote:
>
> Functors & closures, yeah I suppose... for now this system is working,
> and quite easy to add new types to (does need a big recompile after a
> change though.. as heaps of headers include the "Event" type, as its
> pretty much to core of the Engine.. :)
>


Hmm, i used Functors and Closures in jass for passing commands to the 
realtime thread and wrote a small article about it.

http://178.63.2.231/~tapas/wordpress/?page_id=45

Coupled with a poor man's garbage collection scheme using 
boost::shared_ptr's this was a quite quick way to hack up jass. There's 
no need to introduce new types if you want to do something new. Actually 
there's only exactly one type that gets passed through the command 
ringbuffer and that is boost::function<void(void)>. See e.g.

https://github.com/fps/jass/blob/master/engine.h

and

https://github.com/fps/jass/blob/master/main_window.h

I agree that this method doesn't necessarily scale to other kind of 
applications and it also might be a bit more error prone than a well 
thought out event system using types that cover all bases, it does make 
for a quite good solution for an app of the scope of jass..

Have fun,
Flo



> -Harry
>
> PS: Nice article on "Duct tape programming":
> http://www.joelonsoftware.com/items/2009/09/23.html Especially read
> the paragraph beside the photo of the guy jumping
>

Taking a look..





More information about the Linux-audio-dev mailing list