Timeline for Why is multithreading not used everywhere?
Current License: CC BY-SA 4.0
7 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Jul 12, 2020 at 20:33 | comment | added | Brent | QueueUserWorkItem falls into interdependency between threads. | |
Jul 11, 2020 at 20:45 | comment | added | jamesqf | You have a rather limited idea of what constitutes "intensive computations" :-) Really intensive computations may have threads that run for hours, days, or even longer, so the setup time is inconsequential. | |
Jul 11, 2020 at 17:55 | comment | added | gidds | Not just intensive computations. GUI applications are inherently multithreaded (unless they do no serious work, or freeze the UI whenever they're doing it). So are applications which read external data streams (video, sensor data, stock prices…), or which respond to incoming requests (web servers…). | |
Jul 11, 2020 at 17:21 | comment | added | George Barwood | @Brent The code does use the system thread pool ( System.Threading.ThreadPool.QueueUserWorkItem) however the time to queue a task for execution is still quite significant, typically several micro-seconds. This means a task that takes roughly this time or less ( and modern processors can do a lot of work in this time ) is not a good candidate for parallel execution. | |
Jul 11, 2020 at 15:55 | comment | added | Brent | You may want to try thread pools in the future. The overhead of multi threading can be reduced significantly if done carefully. The main bottleneck is interdependency between threads. The more you can isolate the work of each thread, the more leverage you'll get. | |
Jul 11, 2020 at 12:58 | comment | added | Christophe | Interesting! Indeed, it's not easy to transform increased multithreading into increased performance. Running more threads, even with multithreaded cores, reduces slightly the speed of each individual thread, while at the same time it can increase significantly the global throughput (see experiment here on SO). But the global throughput increases only if the processing task can be parallelized, which is not obvious for many algorithms that rely on sequential flow (example on SE). | |
Jul 11, 2020 at 10:39 | history | answered | George Barwood | CC BY-SA 4.0 |