diff --git a/doc/go_faq.html b/doc/go_faq.html index 33e5cde41a1..93e1ea4ee51 100644 --- a/doc/go_faq.html +++ b/doc/go_faq.html @@ -1020,10 +1020,23 @@ slower?
It depends on the nature of your program. -Programs that contain several goroutines that spend a lot of time -communicating on channels will experience performance degradation when using -multiple OS threads. This is because of the significant context-switching -penalty involved in sending data between threads. +Problems that are intrinsically sequential cannot be sped up by adding +more goroutines. +Concurrency only becomes parallelism when the problem is +intrinsically parallel. +
+ +
+In practical terms, programs that spend more time
+communicating on channels than doing computation
+will experience performance degradation when using
+multiple OS threads.
+This is because sending data between threads involves switching
+contexts, which has significant cost.
+For instance, the prime sieve example
+from the Go specification has no significant parallelism although it launches many
+goroutines; increasing GOMAXPROCS
is more likely to slow it down than
+to speed it up.