第7章 Linux併發控制 完成量

2021-08-20 03:53:30 字數 737 閱讀 1563

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...