my current project is to write software with VisualC++ 2008 for a QuadCore PC running WinXP. Linux is not an option. My software receives a constant data stream of about 20 MB/s via USB from a custom electronic made by my boss. If I don't grab the data fast enough the datasource has to stop producing data, which is bad, obv.. Another aim is to not only receive data in realtime but also to evaluate and display it in realtime.
I'm able to tell the customer "Don't touch the machine while my programm runs" This way I only have to guarantee realtime behavior in a known environment thus in theory I could know every thread and process that runs on my machine.
So my current plan is to use one core for USB receiving and the three others for data evaluation. GUI handling and Windows. After some research on the net I tend to use the TBB or boost.org library. Unfortunatly I can't find functions in them to guarantee CPU time or to bind a CPU completly to a task. The USB task doesn't need much speed since it only grabs data and stores it away. But it DOES need a high rate of availability. Ideally I'd like to have real interrupt behavior.
How can I guarantee CPU time to my USB task, or can I even bind a CPU to exclusivly work on this task? Is TBB usable for it or can you recommend other tech? Is it possible to manipulate the windows scheduler or completly hijack the system?