Post! Ron is right. Parallelization is not something you do as an afterthought.
not really true...
By example, the simplest means of parallelizing loops (data decomposition) is to let the compiler do all the work for you. The Intel C++ Compiler, version 7.0 and later, has support to analyze loops and parallelize those that it considers good candidates. The -Qparallel switch enables the feature... But since the code was not created for parallelization, the speed win is only around the 28%...
While automatic parallelization is great, there are times when the developer can, or would like to direct the compiler what to thread. After all, he know much more about the overlying algorithm than the compiler could ever attempt to understand. The OpenMP standard allows the developer the kind of flexibility he desires, while limiting the time investment necessary to thread code. OpenMP works on an explicit fork/join method, so the programmer must specify the start and end of a parallel region.
The Intel C++ Compiler version 7.0 supports OpenMP, but not all C++ compilers at the time of this writing do so. Use the -Qopenmp switch to enable processing of the OpenMP directives or pragmas to generate threaded code.
The cool thing about OpenMP is that it allows easy parallelization of loops or regions of your code without large-scale modifications. In fact, the original serial code is left largely intact.
Both method was used long time ago in the game industry when HT ( Hyper Threading ) have appear on Desktop computer... it is nothing new...
For synchronization a simple spin-wait loop may suffice but spin-waits can quickly become a hindrance on performance. A spin-wait locks up processor resources because it runs so efficiently, therefore stalling both logical processors. Inserting an assembly-level pause instruction can alleviate the detrimental effects of spin-waits...
So, yes, it is possible... but not really interesting for dual core... 4 or 8 core ( or more ) are better because these reduce the latency ( spin-wait )...Sins already use a second core ( if it exist ) for load texture... so, Sins is already using the multi-core architecture...and don't forget that the real goal of Stardock was to make run Sins on the more computer... not only the high end one...
Maybe a article related to a old Stardock game, called Galactic Civilization II will show that multi-threaded game is nothing new but ...
http://www.gamasutra.com/features/20060405/wardell_03.shtml
read the part 2 and point 3 of the lesson learned...
multi-threaded II