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