多執行緒開發和Socket技術

2021-07-11 02:50:25 字數 2707 閱讀 3337

程序:每個應用程式對應乙個程序;

執行緒:乙個程序至少包含乙個執行緒,執行緒要和cpu進行互動。

多執行緒併發(可以理解為):"同一時間"執行多件事情,如程式一邊執行,一邊計數(計時);如人一邊吃飯,一邊看電視。

多執行緒併發的本質,其實並不是cpu"同時"執行多件事情,而是在不停的切換,執行一段時間事件a,切換,執行一段時間事件b;再切換,再執行一段時間事件a,如此往復,因為cpu處理速度非常快,電腦的使用者感覺不到,所以看起來就像是在同時執行多件事情。

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

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

乙個程序會建立乙個預設執行緒,即主線程,也就是ui執行緒。 

多執行緒的優點

1.讓計算機"同時"做多件事情,節約時間;

2.後台執行程式,提高程式的執行效率,也不會使主介面(ui執行緒)出現無響應的情況;

3.多執行緒可以讓乙個程式"同時"執行多件事情;

4.計算機cpu大部分時間處於空閒狀態,避免浪費了cpu資源。

1.為執行緒執行乙個方法(執行緒肯定要執行一段**),這個方法中的**就是該執行緒執行時要執行的**(找乙個人來做一件事)

產生乙個執行緒的4個步驟:

1.編寫該執行緒所要執行方法的**

2.引用system.threading命名空間

3.例項化thread類,並傳入乙個指向執行緒所要執行方法的委託。(這時候執行緒已經產生,但還沒有執行)

4.呼叫thread例項的start()方法,標記該執行緒可以被cpu執行了,但具體執行時間由cpu決定。 

前台執行緒:只有所有的前台執行緒都關閉才能完成程式關閉的執行緒;

後台執行緒:只要所有的前台執行緒結束,後台執行緒自動結束。

將乙個執行緒設定為後台執行緒的方法:

thread.isbackground = true;

執行緒可以執行

1.不帶引數的委託(無傳入引數)

threadstart();

2.傳入帶引數的委託

parameterizedthreadstart(object);

傳入引數型別為object,理論上可以傳任意的集合、列表和陣列等。

例子:定義乙個執行迴圈任務的方法:

void

countnum()

timespan ts =datetime.now.subtract(begintime);

messagebox.show(

"迴圈執行完畢,用時:

" +ts.totalmilliseconds);}//

在多執行緒button的click事件中

thread thread = new

thread(countnum);

thread.isbackground = true; //

標記該執行緒為後台執行緒(前台執行緒結束後停止執行)

thread.start();

1.socket的英文原意是"孔"或"插座"。作為程序通訊機制,取後一種意思。通常也成為"套接字",用於描述ip位址和埠,是一種通訊鏈的控制代碼。(其實就是2個程式通訊用的)

2.socket非常類似於**插座。以**網為例,**的通話雙方都相當於相互通訊的2個程式,**號碼就是ip位址。任何使用者在通話之前,首先要占有一部**機,相當於申請乙個socket;同時要知道對方的**號碼,相當於對方有乙個固定的socket;然後雙方撥號呼叫,相當於發出連線請求。加入對方在場並空閒,拿起**聽筒,雙方就可以正式通話了,相當於連線成功。雙方通話的過程中,是一方向**機發出訊號和對方從**機接收訊號的過程,相當於向socket傳送資料和從socket接收資料。通話結束後,一方結束通話**相當於關閉socket,撤銷連線。

3.在internet上有許多主機,執行多個服務軟體,同時提供幾種服務,每種服務都開啟乙個socket,並繫結到乙個埠上,不同的埠對應不同的服務(應用程式)。

例如:http使用80埠,ftp使用21埠,smtp使用23埠。

4.socket傳遞資料主要有2中型別:

是一種面向連線的socket,針對於面向連線的tcp服務應用,安全,但是效率低。

是一種無連線的socket,對應於無連線的udp服務應用,不安全(丟失、順序混亂,在接收端要分析重排及要求重發),但效率高。

5.socket一般應用模式(服務端和客戶端互動)

三次握手的過程。

6.socket的通訊過程

socket操作相關類和方法

多執行緒和socket介紹

程序和執行緒 乙個程序至少有乙個執行緒,同乙個程序中的多個執行緒可以併發執行。所謂的併發只是不停的切換,只是電腦切換的太快了,人我們的大腦感覺到是在併發執行。執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標,程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。多執行緒是...

Socket 多執行緒

服務端 include include pragma comment lib,ws2 32 include void sendfuction socket sockconn void recvfunction socket sockclient void main if lobyte wsadata...

socket多執行緒通訊

程序與執行緒的區別 程序 在作業系統構成單獨執行流的單位。執行緒 在程序構成單獨執行流的單位 執行緒的建立和執行流程 include int pthread create pthread t restrict thread,const pthread attr t restrict attr,voi...