使用pthread的工作队列

时间:2015-03-30 21:55:35

标签: linux multithreading pthreads

在Linux内核中,工作队列可用于安排任务的异步执行。在伪代码中,

while(condition) {
  read data
  add to linked list
  schedule_work(&write_data)
}

计划函数write_data的异步执行,其中write_data执行以下操作:

write_data() {
  write data from first node of linked list
  link to next node
  free first node
}

在用户空间,我想实现同样的目标。然而,pthread似乎有点不同,让我感到困惑。我想做以下事情:

while(condition) {
  read data
  add to linked list
  schedule writing of data
}

我希望数据写入是异步的。我如何使用pthread实现这一目标?

1 个答案:

答案 0 :(得分:0)

我做了以下适合我的目的:

write_data_thread() {
  wait for flag
  write data if flag is set
  reset flag
  sleep
}

while(condition) {
  read data
  add to linked list
  set flag
}

我需要使用互斥锁来控制对标志的访问。