Quote:
Anyways to the point, Hans, how many ASIO threads are actually created during normal operation and what priorities are set to these threads. I've been noticing that ASIO threads are getting dumped every few seconds if priority is set to realtime for ST. ST continues operating without hiccups. I checked with SysInternals' Process Explorer. I see 2 asio threads created, surprisingly the two have different thread priorities.
When ST is set to idle/low, 1 ASIO thread is at 4/4(Base/Dynamic) whereas the other one is at (15/24). When set to realtime, the first one is at now at 24/24. The second one begins with 31/31 and falls back to 31/24 after a few seconds and that's when drops and clicks begins to happen. ASIO threads are dumped and new one created every few(5-6) seconds.
Hm, I can tell you that there is at least the following:
- One driver thread that calls Stereo Tool to 'swap buffers'. Basically, a package of samples is delivered to Stereo Tool, and simultaneously, Stereo Tool sends a package of samples back to the driver.
- One processing thread in Stereo Tool. This gets 'woken up' when samples have arrived, collects them, and if enough samples have been collected, processes them. This takes several ms (depending on processing setting), and could potentially interfere with the first (driver) thread if that has a lower or equal priority. The priority of this thread is 'Normal' (7), or 'Time Critical' (15) if 'high' is selected in Stereo Tool, or 'RealTime/Time Critical' (31) if Realtime is selected in Stereo Tool. If you select Normal in Stereo Tool and Realtime in Task Manager, it's RealTime/Normal (23).
- If multicore processing is enabled: An extra thread, same priority as the previous one, that adds the FM MPX signal and - if enabled - performs composite limiting.
- There's also a thread (priority Normal) that performs GUI updates.
- And finally there's a thread that processes Windows messages (mouse clicks etc.), also at priority Normal.
Now:
- I don't know why there are 2 ASIO4ALL threads. (Most likely one - that with the highest priority? - is the actual processing thread, the other one is the rest of the ASIO4ALL stuff).
- I read somewhere that ASIO4ALL uses a new mechanism in Windows Vista/7 to raise the priority, HOWEVER IF THE CPU LOAD GETS ABOVE 80% IT GETS REDUCED TO NORMAL PRIORITY. What is your CPU load?
I've seen that there are some other applications that change the priority of the ASIO driver thread... That seems a bit risky, but apparently it's sometimes needed. So that MIGHT be the solution here. Unfortunately, setting the priority myself will interfere with this new Windows Vista/7 mechanism, so I'd like to avoid it if possible.
"ASIO threads are dumped and new one created every few(5-6) seconds." - Wild guess: ASIO4ALL detects that there is something wrong (due to all the clicks, which it can detect because the function doesn't return in time) and restarts the thread.