HID and threads WAS: [PD-dev] audio interruptions from outside events (only with Pd)

Hans-Christoph Steiner hans at eds.org
Mon Dec 4 22:24:12 CET 2006


On Dec 4, 2006, at 3:19 PM, Tim Blechmann wrote:

> On Mon, 2006-12-04 at 14:53 -0500, Hans-Christoph Steiner wrote:
>>
>>> I have no idea about the inner workings of hidio (is there a
>>> separate low-priority thread for handling the HID requests?)
>>
>> This was bugging me so I have to respond to it.  From what I've
>> seen,
>> I think handling HID I/O in a low priority thread would be a bad
>> idea.  Do you know any application that does that?  The effect would
>> be that your mouse pointer would skip whenever something with higher
>> priority was run.  This may be the case on Windows, but definitely
>> not on Mac OS X and GNU/Linux.
>>
>> On Mac OS X, the kernel queues HID events and uses wired kernel
>> memory for the queues to ensure that those events get out there as
>> soon as possible and reliably without a thread.  No example code
>> that
>> I have seen, from Apple or others, puts HID event handling in a
>> thread.  To put it simply: you don't want your mouse pointer to be
>> pre-empted.
>
> well, it depends on how you can query the hid i/o. if the access to  
> the
> hid backend is either blocking or slow, you should think about putting
> the specific code in a thread with a lower priority than the audio
> thread, unless you prefer a smooth mouse movement over audio  
> dropouts :)

[comport] and [hid] both use the standard calls and both do not use  
threads at all, yet neither has problems with blocking I/O (or at  
least no one has been able to make a patch that causes it to  
happen).  I am pretty sure they both use high priority queues in the  
kernel so that return very quickly.

I would be very interested to hear,

a) that someone can reproduce issues with blocking I/O in [comport]  
and/or [hid]

b) what the exact mechanism is with the serial/HID queues that makes  
them not block when using standard calls (I only know some details)

We are deep in the throws of the design discussion for [hidio] so we  
need to define what needs a thread.

.hc

> imo, all non-audio i/o of a low-latency system should should be  
> detached
> from the audio thread to avoid dropouts.
>
> tim
>
> --
> tim at klingt.org    ICQ: 96771783
> http://www.mokabar.tk
>
> All we composers really have to work with is time and sound - and
> sometimes I'm not even sure about sound.
>   Morton Feldman



------------------------------------------------------------------------

All information should be free.  - the hacker ethic








More information about the Pd-dev mailing list