等待佇列很容易使用, 儘管它的設計很是微妙, 但你不需要知道它的內部細節, 處理等待佇列的最佳方式就是依照如下操作:
1. 聲明一個struct wait_queue * 變數. 你需要為每一個可以讓進程睡眠的事件預備這樣一個變數. 這就是我建議你放在描述硬體特性數據結構中的數據項.
2. 將該變數的指針作為參數傳遞給不同的sleep_on和wake_up函式.
這相當容易. 例如, 讓我們想像一下, 當進程讀你的設備時, 你要讓這個進程睡眠, 然後在某人向設備寫數據後喚醒這個進程. 下面的代碼就可以完成這些工作:
struct wait_queue *wq= NULL;
read_write_t sleepy_read(struct inode *inode, struct file *flip, char *buf, count_t count)
{
printk(KERN_DEBUG "process %i (%s) going to sleep\n", current->pid, current->comm);
interruptible_sleep_on(&wq);
printk(KERN_DEBUG "awoken %i (%s)\n", current->pid, current->comm);
return 0;
}
read_write_t sleepy_write(struct inode *inode, struct file *flip, char *buf, count_t count)
{
printk(KERN_DEBUG "process %i (%s) awakening the readers\n", current->pid, current->comm);
wake_up_interruptible(&wq);
return count;
}
相關詞條
-
佇列機制
佇列是一種數據結構,它具有先進先出的特點,是一種套用很廣泛的結構。在計算機或計算機之間,為了提高計算機或計算機之間的工作效率,我們經常採用佇列機制。佇列...
定義 分類 -
優先佇列
優先佇列(priority queue) 普通的佇列是一種先進先出的數據結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先權。當訪問元...
定義 實例 操作 與佇列相似 -
優先權佇列
如果我們給每個元素都分配一個數字來標記其優先權,不妨設較小的數字具有較高的優先權,這樣我們就可以在一個集合中訪問優先權最高的元素並對其進行查找和刪除操作...
優先佇列的類定義 優先權 實例 套用 -
java佇列
“佇列”這個單詞是英國人說的“排”。在英國“排隊”的意思就是站到一排當中去。計算機科學中,佇列是一種數據結構,有點類似棧,只是在佇列中第一個插入的數據項...
基本信息 基本操作 -
佇列[常用數據結構之一]
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的...
簡介 佇列的數組實現 佇列的鍊表實現 佇列的基本運算 -
任務輸入佇列
佇列,是先進先出(FIFO, First-In-First-Out)的線性表。是一種常用的數據結構,在具體套用中通常用鍊表或者數組來實現。佇列只允許在後...
簡介 優先權佇列 監控軟體排隊應用程式的系統和方法 -
順序佇列
順序佇列是佇列的順序存儲結構,順序佇列實際上是運算受限的順序表。和順序表一樣,順序佇列用一個向量空間來存放當前佇列中的元素。由於佇列的隊頭和隊尾的位置是...
套用背景 表示方法 基本操作 存在問題 -
多級反饋佇列調度算法
多級反饋佇列調度算法,是一種CPU處理機調度算法,UNIX作業系統採取的便是這種調度算法。
-
報文佇列
又稱報文行列。 數據通信中,①等待處理或等待向終端傳送的一批有序報文。 ②在報文數據集中等待向主系統或特定終端傳輸的一個報文行列。