讀寫鎖與程序守護

2021-08-19 04:02:39 字數 1481 閱讀 4366

一、讀寫鎖:

一種交易場所:變數、陣列、鍊錶等其他資料結構

兩種角色:讀者、寫者

三種關係:讀者和寫者之間沒有關係;寫者與寫者之間互斥;讀者與寫者之間同步和互斥關係

讀者與讀者之間共享,讀者與寫者之間必須等一方解鎖,另一方才能加鎖;讀者與寫者執行緒同時競爭鎖,寫者會優先獲取到鎖

1.案例:

**:# include

# include

# include

# include

1.實現乙個交易場所:

int count;

2、建立兩個角色

pthread_rwlock_t g_lock;

3、實現三種關係,使用讀寫鎖

void *read(void *arg)

return null; }

void *write(void *arg)

return null; }

int main()

結果:

二、程序間關係和程序守護

守護程序:

**:# include

# include

# include

# include

# include

void mydaemon(void)

2.子程序呼叫setsid,建立乙個新的會話

setsid();

3.忽略sighup,sigchld

signal(sighup, sig_ign);

signal(sigchld, sig_ign);

4.修改工作目錄為根目錄

chdir("/");

5.對標準輸出和標準錯誤進行重定向

int fd = open("/dev/null", o_rdwr);

dup2(fd, 1);

dup2(fd, 2);

6.修改umask

umask(0); }

int main()

return 0; }

結果:法二:

**:

int main()

return 0; }

使用nohup把程序變為守護程序(不會立即建立會話id,不會歲會話id的終止而終止)

nohup ./檔名 &

ps axj | grep 檔名

daemon(0,0):第乙個0:修改工作目錄為根目錄;第二個0:對標準輸出,標準錯誤進行重定向

關閉視窗

結果:ps axj | grep 檔名

python執行緒鎖 守護執行緒,程序鎖 守護程序

1 守護程序 1.1 什麼是守護程序?1 守護程序會在主程序 執行結束的情況下,立即結束。2 守護程序本身其實就是乙個子程序。3 主程序在其 結束後已經執行完畢 守護程序在此時就被 然後主程序會一直等非守護的子程序都執行完畢後 子程序的資源才會結束。1.2 為什麼要用守護程序?1 守護程序本身就是乙...

程序(讀寫鎖)

併發操作 對於某一資料,多使用者可以併發的讀取資料,但是同時只可以有乙個使用者進行修改操作。讀寫鎖 read write lock 一 綜述 在一些程式中存在讀者寫者問題,也就是說,對某些資源的訪問會 存在兩種可能的情況,一種是訪問必須是排它行的,就是獨佔的意思,這稱作寫操作 另一種情況就是訪問方式...

守護執行緒 與守護程序

守護執行緒 守護執行緒會等待所有非守護執行緒執行結束才結束 守護程序 無論子程序有沒有執行結束,當主程式的 執行完畢,都會結束 def f1 time.sleep 2 print 1號執行緒 def f2 time.sleep 3 print 2號執行緒 if name main t1 thread...