【发布时间】:2013-05-26 08:35:49
【问题描述】:
我正在玩 Go 以了解它的功能和语法。我已经完成了一个简单的生产者-消费者程序,它带有并发的 go 函数,中间有一个优先级缓冲区。单个生产者生产具有特定优先级的任务,并使用通道将它们发送到缓冲区。一组消费者会在空闲时请求一个任务,收到并消费它。中间缓冲区将在优先级队列缓冲区中存储一组任务,因此首先服务于最高优先级的任务。该程序还打印垃圾收集器活动(调用了多少次以及收集垃圾花费了多少时间)。
我在使用 Go 1.1 的 Raspberry Pi 上运行它。
软件貌似运行正常,但是我发现在SO级别,htop显示有4个进程在运行,内存使用相同,CPU使用总和超过100%(树莓派只有一个核心所以我想它与线程/进程有关)。此外,系统负载约为 CPU 的 7%,我想是因为操作系统级别的上下文切换不断。 GOMAXPROCS 环境变量设置为 1 或未设置。
你知道为什么 Go 使用多个操作系统进程吗?
代码可以在这里找到:http://pastebin.com/HJUq6sab
谢谢!
编辑:
似乎htop 显示了系统的轻量级进程。 Go 程序运行其中几个轻量级进程(它们与 goroutines 线程不同),因此使用 htop 会显示多个进程,而 ps 或 top 将只显示一个,因为它应该是。
【问题讨论】:
标签: go