内核中的许多部分初始化某些活动为单独的执行线程,然后等待这些线程完成。完成接口是一种有效并简单的方式来实现这样的代码模式。
对象创建:
DECLARE_COMPLETION(my_completion);
或
struct completion my_completion;/* ... */
init_completion(&my_completion);
操作:
void wait_for_completion(struct completion *c); //执行一个不可中断的等待
void complete(struct completion *c);//唤醒一个线程
void complete_all(struct completion *c);//唤醒多个线程i
当调用complete时,可重用

本文探讨了Linux内核中如何使用完成量(completion)作为同步机制。通过DECLARE_COMPLETION或init_completion初始化完成后,wait_for_completion用于线程等待,而complete和complete_all则用于唤醒等待的线程。complete_all执行后,为了重用completion对象,通常需要重新初始化。
最低0.47元/天 解锁文章

2478

被折叠的 条评论
为什么被折叠?



