以後有空就寫個部落格,算是技術筆記。
//這個佇列實現暫且定位為「單生產者單消費者模型」。
//在這個迴圈佇列裡,"隊空"的條件是:隊頭索引 = 隊尾索引, 「隊滿」的條件是:隊尾索引加1等於隊頭索引
//按照慣性思維,隊頭在左邊,隊尾在右邊,入隊是尾右移,索引值增加,出隊是隊頭右移,索引增加。
#include #include #define maxsize 16 //佇列長度實際為(maxsize - 1),另乙個用來區分隊空和隊滿
typedef int qelemtype;
typedef struct circuequeue;
//建立乙個迴圈佇列並初始化為空。
circuequeue * createcircuequeue(void)
// 求迴圈佇列中元素個數
int circuequeuelength(circuequeue *q)
//迴圈佇列的「入隊」操作,成功返回「1」
int enqueue(circuequeue *q, qelemtype e)
q->data[q->rear] = e;
q->rear = (q->rear + 1) % maxsize;
return 1;
}//迴圈佇列的「出隊」操作,成功返回「1」
int dequeue(circuequeue *q, qelemtype *pelem)
*pelem = q->data[q->front];
q->front = (q->front + 1) % maxsize;
return 1;
}//測試程式
int main()
//判斷佇列有多少元素,並列印
length = circuequeuelength(q);
printf("circuequeue length is:%d\n", length);
// 出隊並且列印
for (i = 0; i < length; i++)
//判斷佇列長度並列印
length = circuequeuelength(q);
printf("circuequeue length is:%d\n", length);
return 0;
}
(隨時接受大家的批評指正qaq) Redis 定長佇列(支援redis集群)
某些業務場景,需要實現原子性的,效能可靠的分布式定長佇列,它必須具備以下功能 定長list type redislimitlist struct func newlimitlist expireseconds int maxlen int scheme int redislimitlist var ...
使用定長陣列實現佇列
使用定長陣列實現佇列方法很簡單 我們需要 4 1 乙個陣列 2 乙個能表示陣列中還有多少容量的變數 3 乙個能表示隊首的變數 4 乙個能表示隊尾的變數 入隊先判斷佇列還有多少容量,如果容量為0表示隊滿,則不能在入隊。如果容量不為0.則表示佇列還有容量。然後再判斷入隊後,隊尾是不是陣列的最後乙個節點,...
利用redis實現定長的執行緒佇列
redis 首先就不做簡介啦,直接上 和功能 首先我們有乙個長度不定的佇列takslist用於接收所有的任務,然後有乙個定長的執行任務佇列runningtask用於控制正在執行的執行緒個數 3個 1 模擬乙個生產者程序,用於不斷地產生任務 redis生產者程序 yufeng on 2018 1 22...