Quote from CT10Gov:
Updating an SMA calculation with each incoming quote is literally one subtraction, one addition, and one division; Granted, these are floating number ops, but the amount of instruction needed for multiple threads will be FAR larger!
(std is a few more instructions)
Know your algorithms!
Yeah. If you know where your bottlenecks are, the catch-all solution is not to just start spawning threads willy nilly, but to attack the bottleneck. In your case, if you're just calculating moving averages, just update one quote at a time. You should be worried about numerical instability -- so just recalculate the whole damn thing once every 100 ticks or something. Bam. If you were spending 95% in that area of the code, now your code is like 20 (amortized) times faster.
If you really start trading hundreds of instruments, and you really need shared memory for something (the best case I can think of for multithreading is in using shared memory for reads and writes), then I can see the case for multithreading. Premature optimization is the root of all evil!