Wenn ein Programm nur auf 2 Threads ausgelegt ist, dann wird man keinen Geschwindigkeitszuwachs merken. Ich glaube jedoch nicht, dass das oft der Fall sein wird. Der Grund warum normalerweise immer nur ein Thread läuft ist, dass es bei mehreren Threads gewisse Effekte gibt, die auftreten können und nicht reproduzierbar sind z.B. Deadlocks oder, dass ein Thread die Daten eines anderen Threads überschreibt z.B. bei folgendem Code:
int ret;
ret = machirgendwas();
if(ret < 1)
outputkleiner1();
if(ret == 1)
output1();
if(ret > 1)
outputgroeßer1();
Wenn jetzt ein zweiter Thread den Wert von ret verändert während der andere Thread schon eine Bedingung geprüft hat, dann wird kein Output ausgegeben, obwohl das so eigentlich nicht sein dürfte. Das Problem ist, dass das Programm 3 Monate gut laufen kann und dann auf einmal macht es einen groben Fehler und man ist nicht in der Lage ihn zu finden. Der Aufwand für mehrere Threads ist also sehr hoch, weil man einen viel saubereren Programmierstil braucht, da man Fehler in manchen Fällen so gut wie nicht finden kann. Ob man hingegen jetzt 2 ,4 oder beliebig viele Threads hat, ist schon relativ egal vom Aufwand her.