Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4568335
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2007-02-26 12:50:37

Work Queues

work queues 在2.6kernel 中使用去替代2.4 kernel中的task queue. 允许kernel函数延迟在worker thread中被执行.

主要不同点:task queue  是运行在中断的上下文中; work queue是运行在进程上下文中.所以使用work queue有更多的自由度.

摘自Linux Device Driver(III)

static struct work_struct jiq_work;

/* this line is in jiq_init() */
 INIT_WORK(&jiq_work, jiq_print_wq, &jiq_data);

/*
 * Call jiq_print from a work queue
 */
static void jiq_print_wq(void *ptr)
{
 struct clientdata *data = (struct clientdata *) ptr;
   
 if (! jiq_print (ptr))
  return;
   
 if (data->delay)
  schedule_delayed_work(&jiq_work, data->delay);
 else
  schedule_work(&jiq_work);
}

阅读(3224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~