C 多執行緒併發(linux系統)

2022-08-01 14:21:15 字數 603 閱讀 4745

同乙個程序中可以包括多個執行緒,並且執行緒共享整個程序的資源(暫存器、堆疊、上下文),乙個進行至少包括乙個執行緒。

每個程序都有乙個非負整數作為唯一的程序id,用來表示各個程序,

程序建立:可以通過呼叫fork()或vfork()函式來建立新程序。在建立新程序時,要進行資源拷貝。常見的拷貝方式有三種:(1)共享    (2)直接拷貝    (3)copy or write 方式。

fork函式   #include pid_t fork (void);

函式呼叫失敗會返回-1. 呼叫成功會返回兩個值:(1)在呼叫程序也就是父程序中,返回子程序id。  (2)在子程序中,返回值為0. 因此可以通過返回值來區分子程序還是父程序。

fork使用場景

為了保護父程序不被kill,或父程序異外退出後仍可再次啟動(或後台執行),就執行fork()讓子程序監控主程序的執行狀態,根據監聽保護父程序的執行。

父程序只負責建立子程序,子程序去執子任務,這些任務可能多變、可能更新頻繁,配合fork()exec()函式,保證了父程序的穩定,同時避免頻繁更新程式。

Linux併發(多執行緒協作)

乙個程式裡的執行緒數,就像一家公司裡的員工數一樣,太少了忙不過來,太多了入不敷出。因此我們需要有更好的機制來協調它們。拓展 最理想的情況是 讓程序有一些初始數目的執行緒 所謂的執行緒池 當沒有任務的時候這些執行緒自動進入睡眠,有了任務他們會立即執行任務,不斷迴圈。程序還應該可以根據自身任務的繁重與否...

多執行緒併發

多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...

多執行緒併發

更簡單的執行緒池 多執行緒和多程序都可以很容易的實現併發,協程通過切換上下文來充分利用cpu實現併發效果 threading模組 thread類的基本狀態和行為 屬性名和值 name none,group none,target none,args kwargs daemon none 方法 sta...