一、讀寫鎖:
一種交易場所:變數、陣列、鍊錶等其他資料結構
兩種角色:讀者、寫者
三種關係:讀者和寫者之間沒有關係;寫者與寫者之間互斥;讀者與寫者之間同步和互斥關係
讀者與讀者之間共享,讀者與寫者之間必須等一方解鎖,另一方才能加鎖;讀者與寫者執行緒同時競爭鎖,寫者會優先獲取到鎖
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...