Linux内核线程睡眠问题

时间:2022-02-12 02:28:35
大虾指点下啊。

下面的这个想法可以实现么?
多个线程调用一个共同的函数,而这个函数在某条件满足时返回,否则将线程通过wait_event_interruptible()休眠在同一个等待队列中,等待条件不同。比如condition是flag == var,而var是变量,是共同函数的参数。

期待解答,谢谢,呵呵

7 个解决方案

#1


我觉得应该可以,能力有限。只能期待高手来解答

#2


我试验了一下,条件不满足时,线程并没有在wait_event_interrutible()这里休眠,不知道是这个想法不行,还是程序哪里不对。

#3


wait_event_interrutible()是肯定可以实现这个功能的。
你的  wait_queue_head_t 是否正确初始化了 ?

LDD 里有线程的例子,你可以找来看看。

#4


引用 2 楼 olla168 的回复:
我试验了一下,条件不满足时,线程并没有在wait_event_interrutible()这里休眠,不知道是这个想法不行,还是程序哪里不对。


贴出来,看看你的实现。

#5


我觉得应该没问题

#6


估计你没有初始化,应该可以的

#7


标准信号量的用法,为什么不使用信号量呢?

sema_init(struct semaphore *, int)

down_interruptible(struct semaphore *)

up(struct semaphore *)

#1


我觉得应该可以,能力有限。只能期待高手来解答

#2


我试验了一下,条件不满足时,线程并没有在wait_event_interrutible()这里休眠,不知道是这个想法不行,还是程序哪里不对。

#3


wait_event_interrutible()是肯定可以实现这个功能的。
你的  wait_queue_head_t 是否正确初始化了 ?

LDD 里有线程的例子,你可以找来看看。

#4


引用 2 楼 olla168 的回复:
我试验了一下,条件不满足时,线程并没有在wait_event_interrutible()这里休眠,不知道是这个想法不行,还是程序哪里不对。


贴出来,看看你的实现。

#5


我觉得应该没问题

#6


估计你没有初始化,应该可以的

#7


标准信号量的用法,为什么不使用信号量呢?

sema_init(struct semaphore *, int)

down_interruptible(struct semaphore *)

up(struct semaphore *)