1、工作队列,是中断下半部的一种实现机制,主要用于耗时任务处理,由内核线程代表进程执行。工作队列运行于进程上下文,因此允许阻塞。运行工作队列的内核线程,称为工作者线程,可以使用系统默认的,也可以自行创建,通常无必要理由不推荐,使用工作队列方式:1,初始化工作队列;2,将“工作”,放入“工作队列中”。
2、这样,对应的内核线程就会取出“工作”,执行其中的函数。工作队列缺点:多个工作挤在某个内核线程中依次序执行,前面的函数如果执行得很慢,就会影响到后面的函数。有关数据结构和函数,都位于
。一个_实例代表一个“工作”,工作包含了用户想要要执行的任务。
3、使用时,步骤如下:。1,构造一个_实例,设置处理函数。
4、2,把_放入工作队列,内核线程会运行中的函数。宏_用来定义一个_结构体,需要指定它的处理函数。宏__用来定义一个_结构体,也需要指定它的处理函数。
5、“”指延时,意思是要让该“工作”运行时,可以通过该宏指定延时的时间。_结构体,其实是一个_和一个_等成员的复合结构。
1、宏_用来初始化_结构体:。系统中已有现成的_等工作队列,使用工作队列时,通常推荐用现成的。如果需要自行创建,也有办法,可以使用_或__。_会在系统中,针对每个,都创建一个内核线程和创建的工作队列对应。
2、__只会有一个内核线程与工作队列对应。与创建工作队列相对的,是销毁工作队列,可以调用_来执行该操作。
3、_调度执行一个具体的,执行的将会被挂入提供的。如果想延迟执行,可以调用__,其功能类似于_,不过多了一个延迟。_跟_类似,区别在于_是在系统默认的工作队列上执行一个,而_需要自行指定工作队列。其实,_是利用_实现的,例如系统默认的工作队列_:。
4、__跟__类似,区别在于__是在系统默认的工作队列上执行一个,__需要自行指定工作队列。类似地,__也是依赖于__实现的。
5、_等待一个执行完毕。如果该已经被放入队列,那么本函数等它执行完毕,并且返回;如果该已经执行完毕才调用本函数,那么直接返回。