Originally Posted by hikaricloud
It will work just fine with programs; if any program uses more than one core, it's just called multi-threaded, it doesn't matter if it was 2, 3, or 4 cores.
That's not necessarily the case. The number of threads a program uses is completely up to the developer. Say I want to code a program to check 1,000 items for a characteristic and the higher the items number is the longer it takes to check.
I could take the easy way and just check every item in order starting with 1 and going item by item until I reach the end. That would be single threaded.
To speed things up I could write the program so it has one thread that checks the even numbered items and one thread that checks the odd numbered ones. If I had a dual core cpu this would be much faster since I could do two things simultaneously and essentially cut the run time in half. This approach would run the same on a dual or quad since no matter how many cores I have it was only written to take advantage of 2. If I didn't have a dual core I could still run this program since the operating system will automatically alternate between running the two threads on the cpu but it wouldn't be any faster than the first method.
You could break it up farther but they key is using this approach you will always have an even number of threads. While you could write a method to use odd numbers of cores it wouldn't be a straightforward.
A tri core will still outperform a dual core with the same clock speed and architecture because you are always running more than one program. So if you have a program that only uses 2 cores the operating system will move your background processes to the spare core.