in reply to Re^2: Using threads to run multiple external processes at the same time
in thread Using threads to run multiple external processes at the same time
Imagine you have 10 units of work each needing 1,000 seconds to complete. You need to spend a total of 10,000 seconds of "work" (CPU seconds).
You can only divide efficiently into as many CPUs as you have. With 2 CPUs you can finish in 5,000 seconds. With 10 CPUs you can finish in 1,000 seconds. With 100 CPUs you still need 1,000 seconds unless you can further subdivide your unit of work. 90 CPUs will be idle while 10 do the processing.
Also, the OS takes care of the sharing. No matter if you have 2 or 1,000 threads the OS will make sure each of them gets their fair share of time to run. When you have more threads or processes then you have CPUs in a system they just fight (in a sense) over who can currently execute. You can only have as many running programs as you have CPUs. Even modern CPUs always run 1 program at a time. It just seems like everything is running at once because they constantly switch between programs extremely fast. :)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Using threads to run multiple external processes at the same time
by kikuchiyo (Hermit) on Sep 04, 2009 at 09:24 UTC | |
by BrowserUk (Patriarch) on Sep 04, 2009 at 10:07 UTC | |
by bot403 (Beadle) on Sep 04, 2009 at 15:00 UTC |