Optimized or not, if it can fork, it can already take advantage.
To be able to do a fork is a fundamental code instruction existing in the current software release. How can you have an option for increase multi-thread without fork? How can you writing or include code to fork or to create a thread in existing software release without planning for it?
Symmetroc multi-process programming is not new. It exists when unix was born. I idea of using or including multi-process code like fork can not just suddenly appears in existing software or existing game engine. Like you said, game develop takes years, the option to enable increase threads mean option to allow current code to do more forking.
If such an option is available for your game, do you think the years have already been checked off?
Optimized code, optimized for what? What does optimized for dual cores mean? Are you saying you need separate code for dual cores optimized? another separate code for quad core optimized? another separate code for unicore optimized?
If you answer yes to anyone of the above, then you need a separate system software for each separate optimized code. That's layman's term for you need a windows optimized for dual core to run optimized dual core code. And you need a windows optimized for quad core to run optimized quad core code. SEE?
Basically, if a game gives you option to increase threads, it means the os can load balance threads to each cpu. The only way os can load balance threads to each cpu is if the application can fork more threads. The only way the application can fork (create) more threads is if the user take advantage of existing software option to increase threads. SEE?
A process or a thread is nothing more that list of instructions for the processor. Each thread can execute and finish independently from each. It doesn't matter if the threads were forked from the same parent process (singular) or thread (singular). It doesn't matter if the threads comes from different parents. All threads can execute and finish independently from each other. IF two threads depends on each other than it is by design of programmer. SEE?
So what does optimized mean by you? You are wrong to say any games can take advantage of second cpu.
Only the games that can do fork can have more threads. IF a game doesn't fork, it's code is executed sequentially, even with all the compiled time link libraries, even with all the run time dynamic link libraries, even with all the libraries of the universe, and all all the bad ass super programmers and game designers. The game gets executed sequentially (single core style). SEE?
More threads means more cpu time in a multi-tasking os on a one core processor. More threads means more cpu time and thus get to be load balance by os on multi-core processor. This is generic info, specific info comes when you read msdn documents for NT or vista. For unix, you have to read programmer's manual from vendor of unix flavor os, best just to ask vendor software engineer. For linux, you have to read source code, or faq out there somewhere. In summary, you want specific, you need to know specific to begin your discovery.
Or be like me, try to understand fundamental computing models. I still don't call myself a guru, but I try to pickup every computing models to exist on planet earth. I been doing it since playing games on apple iie computers.
jujubefruit