下面的这个想法可以实现么?
多个线程调用一个共同的函数,而这个函数在某条件满足时返回,否则将线程通过wait_event_interruptible()休眠在同一个等待队列中,等待条件不同。比如condition是flag == var,而var是变量,是共同函数的参数。
期待解答,谢谢,呵呵
7 个解决方案
#1
我觉得应该可以,能力有限。只能期待高手来解答
#2
我试验了一下,条件不满足时,线程并没有在wait_event_interrutible()这里休眠,不知道是这个想法不行,还是程序哪里不对。
#3
wait_event_interrutible()是肯定可以实现这个功能的。
你的 wait_queue_head_t 是否正确初始化了 ?
LDD 里有线程的例子,你可以找来看看。
你的 wait_queue_head_t 是否正确初始化了 ?
LDD 里有线程的例子,你可以找来看看。
#4
贴出来,看看你的实现。
#5
我觉得应该没问题
#6
估计你没有初始化,应该可以的
#7
标准信号量的用法,为什么不使用信号量呢?
sema_init(struct semaphore *, int)
down_interruptible(struct semaphore *)
up(struct semaphore *)
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 里有线程的例子,你可以找来看看。
你的 wait_queue_head_t 是否正确初始化了 ?
LDD 里有线程的例子,你可以找来看看。
#4
贴出来,看看你的实现。
#5
我觉得应该没问题
#6
估计你没有初始化,应该可以的
#7
标准信号量的用法,为什么不使用信号量呢?
sema_init(struct semaphore *, int)
down_interruptible(struct semaphore *)
up(struct semaphore *)
sema_init(struct semaphore *, int)
down_interruptible(struct semaphore *)
up(struct semaphore *)