Linux 系统提供了一种比信号量更好的同步机制,即完成量(completion ,它用于一个执行单元等待另一个
执行单元执行完某事。
  Linux 系统中与 completion 相关的操作主要有以下 4 种。

1.定义完成量
下列代码定义名为 my_completion 的完成量。

struct completion my_completion;

2.初始化 completion
下列代码初始化 my_completion 这个完成量。

init_completion(&my_completion);

对 my_completion 的定义和初始化可以通过如下快捷方式实现。

DECLARE_COMPLETION(my_completion);

3.等待完成量
下列函数用于等待一个 completion 被唤醒。

void wait_for_completion(struct completion *c);

4.唤醒完成量
下面两个函数用于唤醒完成量。

void complete(struct completion *c);
void complete_all(struct completion *c);

前者只唤醒一个等待的执行单元,后者释放所有等待同一完成量的执行单元。

转载于:https://www.cnblogs.com/FarmPick/p/5160142.html

Linux驱动 - 多线程之 完成量相关推荐

  1. linux中同步例子(完成量completion)

    这是一个公交司机和售票员之间的线程调度,用于理解完成量,完成量是对信号量的一种补充,主要用于多处理器系统上发生的一种微妙竞争 在这里两个线程间同步,只有当售票员把门关了后,司机才能开动车,只有当司机停 ...

  2. linux 3.10中完成量的使用

    完成量是基于等待队列设计的,所以显然不能在中断上下文使用完成量. struct completion {unsigned int done;wait_queue_head_t wait; }; 我们来 ...

  3. 内核并发控制---完成量 (来自网易)

    定义在头文件linux/completion.h中; 完成量(completion)是Linux系统提供的一种比信号量更好的同步机制,是对信号量的一种补充;它用于一个执行单元等待另一个执行单元完成某事 ...

  4. Linux内核中锁机制之完成量、互斥量

    在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...

  5. Linux(ubuntu)重新装完系统WIFI没有驱动、无法连接简易上网教程

    Linux(ubuntu)重新装完系统WIFI没有驱动.无法连接简易上网教程 1.换一个无线网卡管理器: wicd 执行下载程序 中间会有一次提示按回车 sudo apt-get install wi ...

  6. linux内核同步之信号量、顺序锁、RCU、完成量、关闭中断【转】

    转自:http://blog.csdn.net/goodluckwhh/article/details/9006065 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一信号量 ...

  7. 通俗地、有效地学习Linux驱动应用(只要没更完有空就更)

    目录 食用方法 Warning Linux系统分层的意义 系统移植和烧写 Windows系统下通过OTG烧写 Ubuntu脚本烧写 Windows脚本烧写 通过uboot进行操作 Debian移植(E ...

  8. 嵌入式Linux驱动开发笔记(未完待续。。。)

    零.嵌入式Linux驱动编程思想 1.面向对象(把一个事件抽象成一个结构体) 2.分层 3.分离 一.Git仓库用法 1.linu终端输入下面命令安装 git clone https://e.codi ...

  9. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入Lin ...

最新文章

  1. 咖啡馆的故事:FTP, RMI , XML-RPC, SOAP, REST一网打尽
  2. Python 字典中get() 函数
  3. JS之字符串分割方法split
  4. 内存不足:杀死进程还是牺牲子进程
  5. mysql之 slow log 慢查询日志
  6. 95-130-350-源码-source-kafka相关-FlinkKafkaProducer
  7. JAVA字符串怎么转换成整数
  8. 禅道PMS兼容redmine用户认证接口
  9. 电脑遇到蓝屏代码0x000007b问题如何解决
  10. 《Excel图表之道》——书和人
  11. Linux安装Diamond软件,1.1 Linux下安装diamond
  12. iOS使用otool反编译查看接库
  13. E - Alarm Clock (尺取法)
  14. 软件定义网络实验之SDN网络简单管理及开发
  15. 刘汝佳《算法竞赛入门经典》---总结
  16. Android 9的神经网络API
  17. 韩顺平Linux视频教程—笔记(全)
  18. 对抗网易相册不能贴图(解决)
  19. Eclipse设置编码字体、左侧窗口字体、控制台字体
  20. 数据结构题及c语言版答案第七章,数据结构第七章习题答案

热门文章

  1. java poi 更新excel_在Java Apache POI中更新现有的Excel文件
  2. if嵌套while循环语句_选考VB算法专题系列讲座13嵌套If和多分支语句
  3. java基本数据类型_Java 中有几种基本数据类型是什么?
  4. java 配置dbcp_java – 配置Jetty 6以使用commons.dbcp数据源
  5. 第四范式AI转型合伙人招聘进行时
  6. python3精要(8)-对象,变量,引用
  7. 【深度学习】90.94%准确率!谷歌刷新ImageNet新纪录!Model soups:提高模型的准确性和稳健性...
  8. 【CV】基于阈值处理的图像分割算法!
  9. 【NLP】词嵌入基础和Word2vec
  10. 【机器学习基础】机器学习和深度学习的练习数据