I love low lag times and high frame rates. I realised that I was getting 30fps running everything on a single thread on a sad windows 8.1 installation, i3 @ 1.4GHz. 30fps…That’s not enough! I dared myself to thread the application and now we will see the outcome of that idea
[Evil…Activate].
Ok…Enough of the hyper-Dev,
So I have created a threading model and I would like to get some input from our experts, like fause1706, techelpdd and some other geniuses, just to name a few 
Here’s a link, and feel free to report problems, spring me a couple ideas or anything!
Oh yeah, and I forgot to mention, Have Fun at your competitions and play safe 
Most mobile i3’s only have two physical CPU cores, but with hyperthreading you get 4 logical cores, which is what you see in Task Manager’s performance tab. (it’s also worth noting that I’ve observed that the CPU utilization reported by task manager reports logical threads oddly; when 2 logical threads equally use 50% of a single physical core, they each report 50% utilization, however total utilization will report 50% rather than 100%)
So in a sense, having 2 threads will yield similar performance to 4, so the split between ball and target tracking may not yield a huge improvement (however it’s also probably easy, so it doesn’t hurt)
Overall, your model seems fine, you’ll want to be careful how you manage the life cycle of each raw image, since it is created by the acquisition thread, and consumed by the two tracking threads, where it should be shared read-only access until somebody disposes it.
If the image life-cycle becomes too complex, you should consider creating a manager thread who manages the consumption of the raw image, and feeds the ball and target tracking threads at a rate they can handle.
However, I am wondering if it will overload the system if I have a core for each processing system and a run the terminal server and the three udp servers in the main thread, idling most of the time. Will if swamp my system to the point that it is inoperable?
How can I assign physical cores to threads? I know the hardware so I really don’t need to write code to mess with finding the core count!
I want to assign the last two cores to the processing loops, the 1st to the aqcuisition and the 0th to the servers!
I don’t know Windoze internals but what you are talking about is “affinity” - assigning threads to executing units. Look for a Windoze API call to to set the affinity.
I am programming in Linux, and I like your spelling :).
I will take a look at affinity. I am just a student with no good C mentors (but I have awesome Java ones), so I don’t really have knowledge of the internals of a computer or the terminology of these processes! Thanks 
I need to take a look at those during my free time! Right now, I need to get a working program down!
I just noticed how I spelled faust1706 and techhelpbb wrong! Sorry
::ouch::