Considering there is no other way to synchronize threads, and if you call a procedure to something with both threads you get even more funky issues, we're kinda stuck with that. GetTickCount returns the number of ticks since the last boot, IIRC, and the queryPerformanceCounter only returns the number of processor cycles ... which clears once a second. That makes it harder to handle. Though, potentially, if you wanted to get into the nitty gritty just use the performance counter to increment the cardinal before the synchronization call; at the end you would still have to divide by both the cycles a second and the number of times you've done your calculations.

But hey, for 30 minutes of experimentation this morning I got threaded stuff done without a hitch. That isn't nearly so intimidating as many folks make it out to be (which is half my hidden point in there).

I have a dual core system, and unless you know how (which I don't) to set a thread's affinity to a specific core it will show 50% usage. Except I look at the graphs and that isn't quite true. It seems to be closer to 66% percent usage than 50%.