The task and work queue are usually used in the lower half, but they can be used anywhere, they are not for them.
Regarding the difference.
1) Tasklet is used in the context of an interrupt. All tasklet code must be atomic, so all the rules that apply to the atomic context apply to it. E.g. They cannot sleep (since they cannot be undone) or hold the lock for a long time.
2) Unlike Task-queue, the execution queue is executed, this means that they can sleep and hold the lock for a long time.
The short chain is used for quick execution, since they cannot sleep when working words are used as normal execution of the lower half. Both of them are executed in the future using the kernel.
source
share