我正在阅读“Robert的Linux内核开发第三版”,以了解Linux内核是如何工作的。(2.6.2.3)
我对等待队列的工作方式感到困惑,例如,下面的代码:
/* ‘q’ is the wait queue we wish to sleep on */
DEFINE_WAIT(wait);
add_wait_queue(q, &wait);
while (!condition) { /* condition is the event that we are waiting for */
prepare_to_wait(&q, &wait, TAS
我在运行Ubuntu 10.10:
uname -a
Linux mt-xps 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:45:36 UTC 2010 x86_64 GNU/Linux
当我运行top时,我偶尔会在顶级CPU使用列表中看到一个"kslowd000“或类似的进程。我试过在谷歌上搜索,但没有找到任何解释。手册也帮不上忙。
它是做什么的?我怎么才能发现自己?
据我所知。Linux是异步通知。当文件描述符变得可读/可写/可接受时,epoll_wait将返回这个fd。但是读写仍然是同步的,会阻塞线程。因此Redis6.0使用线程池来处理网络io。
Windows IOCP和Linux是预言家。当io_uring_enter返回时,读取的数据已经放置在缓冲区中,写缓冲区全部已经写入。
我的问题是:
负责复制这些缓冲区数据的?仍然会阻塞当前线程?如果是,如何加快线程池的使用?