任何人都可以帮助我了解 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 创建工作队列。
但我无法看到多个工作线程(每个用于一个处理器)。