生產者模擬佇列

2021-06-21 14:53:09 字數 3431 閱讀 7202

題目:實現乙個佇列

佇列的應用場景為:

乙個生產者執行緒將int型別的數入列,乙個消費者執行緒將int型別的數出列。

這段代段太美了,值得儲存、

#include #include using namespace std;

templateclass circular

bool empty()

bool full()

void waitfull() }

void waitempty() }

void push(const t &t)

bool pop(t &t)

t pop() };

templateclass lockedqueue

~lockedqueue()

void push(const t &t)

bool pop(t &t)

t pop()

};void *produce_function(void *arg)

}int main()

grep(global search regular expression and print out the line),全面搜尋正規表示式並把行列印出來)是一種強大的文字搜尋工具,它

能使用正則 表示式搜尋文字,並把匹配的行列印出來

grep常用的用法

[root@www ~]# grep [-acinv] [--color=auto] '搜尋字串' filename

選項與引數:

-a :將 binary 檔案以 text 檔案的方式搜尋資料

-c :計算找到 '搜尋字串' 的次數

-i :忽略大小寫的不同,所以大小寫視為相同

-n :順便輸出行號

-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行!

比如: 將/etc/passwd,有出現root的行取出來

grep root  /etc/passwd

將/etc/passwd,將沒有出現root的行取出來  grep -v root /etc/passwd

將/etc/passwd,將沒有出現root和nologin的行取出來   grep -v root /etc/passwd | grep -v nologin

你可以在~/.bashrc內加入這行  alias grep=' grep --color=auto' 在 source ~/.bashrc來立即生效

關鍵字的前3 用 -a3  後三行 -b3

grep正規表示式

grep -n 't[ae]st'  regular_express.txt  其實裡面不論有幾個位元組,它都只代表某乙個位元組

字元類的反向擇 [^] :

行首與行尾位元組 ^ $    

[root@www ~]# grep -n '

^the

'regular_express.txt

如果我想要開頭是小寫位元組的那一行就列出呢?可以這樣:
grep -n '

^[a-z]

'regular_express.txt

如果我不想要開頭是英文本母,則可以是這樣:

[root@www ~]# grep -n '

^[^a-za-z]

'regular_express.txt

^ 符號,在字元類符號(括號)之內與之外是不同的! 在 內代表『反向選擇』,在 之外則代表定位在行首的意義!

那如果我想要找出來,行尾結束為小數點 (.) 的那一行:

[root@www ~]# grep -n '

\.$'

regular_express.txt

,因為小數點具有其他意義(底下會介紹),所以必須要使用轉義字元(\)來加以解除其特殊意義!

任意乙個位元組 . 與重複位元組 *

. (小數點):代表『一定有乙個任意位元組』的意思;

* (星號):代表『重複前乙個字元, 0 到無窮多次』的意思,為組合形態

『o*』代表的是:『擁有空位元組或乙個 o 以上的位元組』

如果我想要字串開頭與結尾都是 g,但是兩個 g 之間僅能存在至少乙個 o 

[root@www ~]# grep -n '

goo*g

'regular_express.txt

如果我想要找出『任意數字』的行?因為僅有數字,所以就成為:

[root@www ~]# grep -n '

[0-9][0-9]*

'regular_express.txt

限定連續 re 字元範圍 {}

我們可以利用 . 與 re 字元及 * 來配置 0 個到無限多個重複位元組, 那如果我想要限制乙個範圍區間內的重複位元組數呢?

舉例來說,我想要找出兩個到五個 o 的連續字串,該如何作?這時候就得要使用到限定範圍的字元 {} 了。 但因為 的符號在 shell 是有特殊意義的,因此, 我們必須要使用字元   \ 來讓他失去特殊意義才行。 至於 {} 的語法是這樣的,假設我要找到兩個 o 的字串,可以是:

[root@www ~]# grep -n 'o\'

regular_express.txt

假設我們要找出 g 後面接 2 到 5 個 o ,然後再接乙個 g 的字串,他會是這樣:

[root@www ~]# grep -n '

go\g

'regular_express.txt

find 命令:

格式: find pathname -options [-print -exec  -ok]

3.命令引數:

pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。 

-print: find命令將匹配的檔案輸出到標準輸出。 

-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' \;,注意和\;之間的空格。 

-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每乙個命令之前,都會給出提示,讓使用者來確定是否執行。

命令選項:

3.命令引數:

pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。 

-print: find命令將匹配的檔案輸出到標準輸出。 

-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' \;,注意和\;之間的空格。 

-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每乙個命令之前,都會給出提示,讓使用者來確定是否執行。

佇列,生產者消費者模型

from multiprocessing import process,lock import os,time,json with open user w encoding utf 8 as f dic json.dump dic,f def search with open user r enco...

生產者消費者問題 JAVA模擬

public class producerconsumer 緩衝區初始化 public static void init static class monitor else catch interruptedexception e public synchronized void removepro...

程序模擬生產者 消費者問題

這裡我只是簡單實現了這個經典問題的思路與想打,並且書寫的程式也是能正確的執行出合理的答案,希望今後還可以改進程式使之更加完善 思路描述 1.生產者程序 產生乙個資料,當要送入緩衝區的時候,要檢查緩衝區是否已滿,若未滿,則可將資料送入緩衝區,並通知消費者程序,否則等待 2.對於消費者程序 當它去取資料...