7.8 完成量
linux提供了完成量(completion,「完成量」),完成量用於乙個執行單元等待另乙個執行單元執行完某事。
linux中與完成量相關的操作主要有以下4種。
#include
1.定義完成量
定義名為my_completion的完成量:
struct completion my_completion;
2.初始化完成量
初始化或者重新初始化my_completion這個完成量的值為0(即沒有完成的狀態):
init_completion(&my_completion);
reinit_completion(&my_completion);
3.等待完成量
下列函式用於等待乙個完成量被喚醒:
void wait_for_completion(struct completion *c);
4.喚醒完成量
下面兩個函式用於喚醒完成量:
void complete(struct completion *c);
void complete_all(struct completion *c);
complete只喚醒乙個等待的執行單元,complete_all釋放所有等待同一完成量的執行單元。
完成量用於同步的流程一般如下:
第7章 Linux併發控制 訊號量
7.6 訊號量 訊號量 semaphore 是作業系統中最典型的用於同步和互斥的手段,訊號量的值可以是0 1或者n。訊號量與作業系統中的經典概念pv操作對應。p s 將訊號量s的值減1,即s s 1 如果s 0,則該程序繼續執行 否則該程序置為等待狀態,排入等待佇列。v s 將訊號量s的值加1,即s...
linux併發控制之完成量
完成量 表示乙個執行單元需要等待另乙個執行單元完成某事後方可執行。1.它是一種輕量級機制,為了完成程序間的同步而設計 2.使用完成量等待時,呼叫程序是以獨佔睡眠方式進行等待的 3.不是忙等待 理解 定義於 include 其結構體為 struct completion 其中,done變數是完成量要保...
第10章 併發控制
多個事務同時訪問共享的資料庫時,如何保證資料庫的一致性?在多使用者dbs中,如果多個使用者同時對同一資料操作,稱為併發操作。併發操作引發的問題 t1 r1 a w1 a r1 b w1 b t2 r2 a w2 a r2 b w2 b sc r1 a w1 a r2 a w2 a r1 b w1 b...