linux - 使用 pthread 的工作队列

标签 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 实现此目的?

最佳答案

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

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
}

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

关于linux - 使用 pthread 的工作队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29357054/

相关文章:

c# - 使用 "ConcurrentDictionary.GetOrAdd()"时避免陈旧(逻辑上损坏)数据,包括重现代码

c - pthread_create 并传递一个整数作为最后一个参数

c++ - 对象和多线程的多个实例的线程安全

c++ - 多线程之间的互斥锁

java - 每个请求的线程架构实现

linux - 从linux中的某个目录启动shell

c++ - 为 C++ Linux 应用程序创建隐藏配置文件

c - 列出所有线程

linux - 如何在linux下使用命令行将字符串转换为二进制整数文件

linux - Jenkins 无法启动