C 之入門總結 程序,執行緒 14

2021-08-05 22:25:56 字數 2509 閱讀 2242

當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。

process pro = process.getprocesses();

//通過程序開啟一些應用程式

process.start("calc");

process.start("iexplore","");

//通過乙個程序開啟乙個指定的檔案

processstartinfo pi = new processstartinfo(@"c:\users\admin\desktop\new.ppt");

process p = new process();

p.startinfo = pi;

p.start();

關機process.start("shutdown", "-s -t 0");

登出process.start("shutdown", "-l ");

重啟                                

process.start("shutdown", "-r -t 0");

static void main(string args)

//    //process pro = process.getprocessbyid(7876);

//   

//    process.start(@"c:\users\yy\desktop\new.txt");

//    process.start("iexplore", "");

"shutdown", "-s -t 0");}

什麼是執行緒?

執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器(棧指標、程式計數器等),但**區是共享的,即不同的執行緒可以執行同樣的函式。

什麼是多執行緒?

多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務,也就是說允許單個程式建立多個並行執行的執行緒來完成各自的任務。

多執行緒的好處:

可以提高 cpu 的利用率。在多執行緒程式中,乙個執行緒必須等待的時候, cpu 可以執行其它的執行緒而不是等待,這樣就大大提高了程式的效率。

多執行緒的不利方面:

執行緒也是程式,所以執行緒需要占用記憶體,執行緒越多占用記憶體也越多; 多執行緒需要協調和管理,所以需要 cpu 時間跟蹤執行緒; 執行緒之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;執行緒太多會導致控制太複雜,最終可能造成很多bug;

任何程式在執行的時,至少有乙個主線程

之前我們寫的每乙個程式都是在主線程上跑著!

我們可以通過thread類的靜態屬性currentthread獲取當前執行的執行緒

可以通過name屬性給執行緒命名

通過threadstate獲取當前執行緒的狀態

使用thread類建立執行緒時,只需要提供執行緒入口入口即可

執行緒入口使得執行緒直到讓這個執行緒幹什麼事兒

其實執行緒的入口就是乙個委託

建立執行緒的語法

thread th = new thread(方法名);

注意:方法可以是靜態的,也可以是非靜態的

方法可以是本類的,也可以是非本類的

通過檢視元資料我麼可以看到執行緒入口是通過 threadstart **( delegate)來提供的,可以把threadstart理解

為乙個函式指標,指向執行緒要執行的函式,當呼叫thread.start()方法後,執行緒就開始執行 threadstart 所代表或者說指向的函式。

執行緒啟動:

t.start();

執行緒休眠:

console.writeline(60 - i);

thread.sleep(1000);

console.clear();

執行緒阻塞:

//阻塞當前的執行緒  直到此執行緒結束後在執行其他的執行緒

終止執行緒:

t.abort();

執行緒鎖lock關鍵字可以用來確保**塊完成執行,而不會被其他執行緒中斷,它是通過在**塊執行期間為給定物件獲取互斥鎖來實現的

lock語句以關鍵字lock開頭,它有乙個作為引數的物件,在該引數的後面還有乙個一次只能有乙個執行緒執行的**塊

提供給lock語句的引數必須為基於引用型別的物件,該物件用來定義鎖的範圍。嚴格來說提供給lock語句的引數只是用來唯一標識由多個執行緒共享的資源所以它可以是任意型別例項。然而實際上此引數通常表示需要進行執行緒同步的資源

class account}}

class program}}

class program

}static void test()}}

} using system.io;

namespace 遞迴呼叫找裡面所有的檔案

static void getallfiles(string path)

}static void getdirectories(string path)}}

程序與執行緒入門

程序間通訊 ipc 是一組程式設計介面,讓程式設計師能夠協調不同的程序,使之能在乙個作業系統裡同時 執行,並相互傳遞,交換資訊。這使得乙個程式能夠在同一時間裡處理許多使用者的要求。ipc介面提供了這種可能性,每個ipc方法均有它自己的優點和侷限,對於單個程式而言使用所有的ipc方法是不常見的。因為即...

c 之執行緒總結 一

在我們做專案的時候會經常用到執行緒,但執行緒也不是萬能的,用執行緒需要注意的東西也很多,自己做了一下總結 這次總結主要說三個部分 1 執行緒之委託方法 2 給執行緒傳參 3 三種方法控制線程同步 我們先看一下小例子 在方法裡我們定義了乙個 threadstart ts new threadstart...

程序執行緒問題總結

include include include include intmain case 1 perror process creation failed n exit 1 default printf i am parent process,my pid is d n getpid 輸出父程序的i...