Day5 佇列 佇列在有限執行緒池資源中的使用

2021-10-01 05:16:37 字數 1040 閱讀 7260

主題:佇列在有限執行緒池資源中的使用

問:什麼是佇列?

答:先進先出 fifo,和棧一樣,是一種操作受限的線性表資料結構

問:佇列的操作?

答:入棧和出棧

問:有哪些佇列?

答: 1. 迴圈佇列

2. 阻塞佇列

3. 併發佇列

問:佇列的實現方式?

答:鍊錶和陣列

基於鍊錶的實現方式,可以實現乙個支援無限排隊的無界佇列(unbounded queue),但是可能會導致過多的請求排隊等待,請求處理的響應時間過長。所以,針對響應時間比較敏感的系統,基於鍊錶實現的無限排隊的執行緒池是不合適的。

而基於陣列實現的有界佇列(bounded queue),佇列的大小有限,所以執行緒池中排隊的請求超過佇列大小時,接下來的請求就會被拒絕,這種方式對響應時間敏感的系統來說,就相對更加合理。不過,設定乙個合理的佇列大小,也是非常有講究的。佇列太大導致等待的請求太多,佇列太小會導致無法充分利用系統資源、發揮最大效能。

佇列實現示例:

陣列

public class arrayqueue

// 入隊

public boolean enqueue(string item)

// 出隊

public string dequeue()

}

如下兩幅圖所示,當tail=7的時候,即使有空閒的空間,以上**就無法新增了,需要重新搬移資料。

那只需要修改入隊**:

// 入隊操作

public boolean enqueue(string item)

// 入隊

public boolean enqueue(string item)

// 出隊

public string dequeue()

}

迴圈佇列隊滿和隊空判定

假設迴圈佇列的隊尾指標是rear,隊頭是front,其中queuesize為迴圈佇列的最大長度。1 入隊時隊尾指標前進1 rear 1 queuesize 2 出隊時隊頭指標前進1 front 1 queuesize 例1,例2 3 佇列長度 rear front queuesize queuesi...

資料結構 5 迴圈佇列 佇列的順序表示和實現

語言 c 編譯環境 visual c 6.0 迴圈佇列 佇列的順序表示和實現 include define ok 1 define error 0 define overflow 2 status是函式返回值型別,其值是函式結果狀態 typedef int status 自定義資料型別別名 type...

資料結構5 佇列

5.1簡介 佇列 queue 和堆疊一樣是一種有序鍊錶,屬於抽象資料型別。不同在於是先進先出 first in,first out,fifo 堆疊只需要乙個top指標指向堆疊頂端即可,但是佇列必須使用front和rear兩個指標分別指向佇列的前端和尾端。基本操作 1 create 建立空佇列 2 a...