ymc4444 发表于 2017-01-17 07:09

我爱你我的菜 发表于 2017-01-17 11:28

循环代表了一定串行执行,检测目前是否在运行决定了不能在多个cpu上运行

nswcfd 发表于 2017-01-20 10:39

list是本地链表不错,但是同一个tasklet(t)可以在不同时刻挂到不同cpu的本地链表list上,所以t还是全局资源。
lock+state/count是用来保证单个t不会并发执行的。

ymc4444 发表于 2017-01-20 20:50

nswcfd 发表于 2017-01-22 19:25

文中的类型不是指tasklet/tasklet_hi这两种类型(它们对应两个优先级不同的softirq),而是指后者(不同的tasklet对象)。

楼主说的不错,不同的tasklet关联同样的function,这些function是有可能同时运行的。

不过这不是“相同类型的tasklet是被串行地执行”的本意。
并发执行的function在不同的tasklet里,没有破坏同一个tasklet不并发执行的约束。 :)

同样的可以类比timer。
针对同一个timer,在不同core上反复调用mod_timer,timer的内部实现保证timer的callback最终只会在单个core上执行。
类似的,针对多个timer,使用同一的callback,在不同core上分别激活,那么这个callback就有可能在不同core上一起执行,但是源自不同的timer。


页: [1]
查看完整版本: 请教一个关于TASKLET的问题。