workqueue

v3.14.25

每个CPU上有两个work_pool,每个work_pool上有一个worker:work_thread。work_thread从相应work_pool->worklist上取出work_struct进行执行。

创建workqueue_struct时,会在每个CPU上都创建一个pool_workqueue,如果在同一个CPU上有多个pool_workqueue对应同一个workqueue_struct,则他们都会挂在一条链上。每个pool_workqueue上有几个链表用于存放一些work_struct.
 
暂时的理解时,如果定时已到或者flush,则从pool_workqueue上取出待执行的work_struct链表置于workk_pool->worklist上。而后唤醒pool_workqueue对应的work_pool对应的work_thread。相应的work_thread从pool_workqueue上取出work_struct进行执行。

posted on 2014-12-26 00:37  阿加  阅读(407)  评论(0)    收藏  举报

导航