Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I know that more cores isn't always better and that most applications are single threaded however does the OS make use of the additional cores? For example, assume an application such as a dictionary brute forcer. Would running four separate instances of this (on a separate 1/4 of the dictionary) on a quad-core processor net the same benefits if the program was actually multithreaded? Essentially would the OS allow all four instances to run truly at once without preempting?

I tend to run many many independent applications at once (firefox with a bunch of tabs, office, chat, dev tools, games).

share|improve this question

Generally, yes, the OS would distribute 4 instances of a program across 4 cores if the cores were available for use (i.e., other programs aren't using them). This could give you similar benefits compared to having 4 threads, except for potential overhead (e.g., 4 threads would most likely share one copy of any loaded dictionary, whereas 4 processes would most likely each load separate copies of the dictionary).

share|improve this answer

To make use of all available cores, you need both (a) support from the OS, and (b) an application workload that can take advantage of multiple cores. Support from the OS is a given for all modern OS's, so this comes down to whether your application workload can take advantage of multiple cores.

If you are running multiple applications simultaneously, then you can benefit from multiple cores. If multiple programs are all trying to run at the same time, the OS will schedule them on multiple cores.

If you are using only a single application at a time, then it depends upon the application whether multiple cores will help you. In particular, it depends upon whether the application is written to be multi-threaded or single-threaded. A single-threaded application only does one thing at a time, and thus can only use a single core. A multi-threaded application creates multiple threads to do multiple things at a time, enabling the OS to schedule each thread on a different core and potentially enabling speedups on a multicore processor.

Applications need to be specially designed and written to use multiple threads and to take advantage of multiple cores, and many common applications don't benefit from multiple cores -- but some do. For instance, Photoshop is written so that if you ask it to do a computationally expensive task, it will break the task up into smaller pieces and distribute those pieces among multiple threads, so they can run on multiple cores. This required special programming from the Photoshop developers and takes a lot of extra effort from developers, so many or most applications haven't bothered to use this style of programming and won't benefit much from a multiple core machine -- but some will.

Given that you tend to run many independent programs at the same time, you'll probably see at least some benefits from a multi-core processor.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .