【发布时间】:2014-09-28 07:34:47
【问题描述】:
谁能帮我理解下面提到的 Linux 内核 API 之间的区别:
struct workqueue_struct *create_workqueue(const char *name);
struct workqueue_struct *create_singlethread_workqueue(const char *name);
我已经编写了示例模块,当我尝试使用ps -aef 查看它们时,两者都创建了一个工作队列,但我看不出任何区别。
我参考了http://www.makelinux.net/ldd3/chp-7-sect-6,根据LDD3:
如果您使用 create_workqueue,您将获得一个工作队列,该工作队列在系统上具有每个处理器的专用线程。在许多情况下,所有这些线程都只是矫枉过正。如果单个工作线程就足够了,请改为使用 create_singlethread_workqueue 创建工作队列。
但我无法看到多个工作线程(每个用于一个处理器)。
【问题讨论】:
标签: c linux-kernel linux-device-driver embedded-linux workqueue