- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.8. 快速参考
5.8. 快速参考
5.8. 快速参考
本章已介绍了很多符号给并发的管理. 最重要的这些在此总结:
#include asm/semaphore.h
定义旗标和其 操作的包含⽂件.
DECLARE_MUTEX name);
DECLARE_MUTEX_LOCKED name);
2 个宏定义, ⽤来声明和初始化⼀个在互斥模式下使⽤的旗标.
void init_MUTEX struct semaphore *sem);
void init_MUTEX_LOCKED struct semaphore *sem);
这 2 函数⽤来在运⾏时初始化⼀个旗标.
void down struct semaphore *sem);
int down_interruptible struct semaphore *sem);
int down_trylock struct semaphore *sem);
void up struct semaphore *sem);
加锁和解锁旗标. down 使调⽤进程进⼊不可打断睡眠, 如果需要; down_interruptible , 相
反, 可以被信号打断. down_trylock 不睡眠; 相反, 它⽴刻返回如果旗标不可⽤. 加锁旗标
的代码必须最终使⽤ up 解锁它.
struct rw_semaphore;
init_rwsem struct rw_semaphore *sem);
旗标的读者/写者版本和初始化它的函数.
void down_read struct rw_semaphore *sem);
int down_read_trylock struct rw_semaphore *sem);
void up_read struct rw_semaphore *sem);
获得和释放对读者/写者旗标的读存取的函数.
void down_write struct rw_semaphore *sem);
int down_write_trylock struct rw_semaphore *sem);
void up_write struct rw_semaphore *sem);
void downgrade_write struct rw_semaphore *sem);
管理对读者/写者旗标写存取的函数.
#include linux/completion.h
DECLARE_COMPLETION name);
init_completion struct completion *c);
INIT_COMPLETION struct completion c);
描述 Linux completion 机制的包含⽂件, 已经初始化 completion 的正常⽅法.
INIT_CO PLETION 应当只⽤来重新初始化⼀个之前已经使⽤过的 completion .
void wait_for_completion struct completion *c);
等待⼀个 completion 事件发出.
void complete struct completion *c);
void complete_all struct completion *c);
发出⼀个 completion 事件. completion 唤醒, 最多, ⼀个等待着的线程, ⽽ complete_all
唤醒全部等待者.
void complete_and_exit struct completion *c, long retval);
通过调⽤ complete 来发出⼀个 completion 事件, 并且为当前线程调⽤ exit .
#include linux/spinlock.h
spinlock_t lock = SPIN_LOCK_UNLOCKED;
spin_lock_init spinlock_t *lock);
定义⾃旋锁接⼜的包含⽂件, 以及初始化锁的 2 个⽅法.
void spin_lock spinlock_t *lock);
void spin_lock_irqsave spinlock_t *lock, unsigned long flags);
void spin_lock_irq spinlock_t *lock);
void spin_lock_bh spinlock_t *lock);
加锁⼀个⾃旋锁的各种⽅法, 并且, 可能地, 禁⽌中断.
int spin_trylock spinl
文档评论(0)