Gab*_*yer 14 java multithreading go goroutine
我们最近一直在讨论操作系统类中的线程,我想到了一个问题.
由于Go,(和Java)使用用户空间线程而不是内核线程,这是否意味着您无法有效利用多个内核,因为操作系统只为进程分配CPU时间而不是线程本身?
jit*_*ter 17
是什么让你认为Go使用用户空间线程?
它没有.它使用OS线程,可以利用多个内核.
您可能会对以下事实感到困惑:默认情况下Go只使用1个线程来运行您的程序.如果你启动两个goroutines,他们会在一个线程中运行.但是如果I/O Go的一个goroutine块创建了第二个线程并继续在新线程上运行另一个goroutine.
如果您真的想解锁完整的多核电源,请使用该GOMAXPROCS()功能.
runtime.GOMAXPROCS(4); //somewhere in main
现在你的程序将使用4个OS线程(而不是1个)并且能够完全使用例如4核心系统.
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |