一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .NET Windows 多線程thread編程

.NET Windows 多線程thread編程

2019-10-12 11:02asp.net編程網 ASP.NET教程

.net里使用線程,用thread類,定義線程,啟動,銷毀,全部包括在這個類里,定義一個線程,必須指定這個線程的函數,也就是這個線程是做什么的

進程:工廠搬磚頭,10個工人搬完1000個磚頭 
線程:每個工人,搬完100個磚頭,就是一個任務 
采用線程,異步搬: 
手工去搬,10個工人同時搬,效率高,異步執行,如果不采用線程,等第一個人搬完后第二個人才搬,那就慢了

什么時候不能用線程: 
如果要用小車來搬,只有一個小車,那么,在這樣的情況下,就不應該用線程,因為只有一個小車,各個線程都在爭奪和等待這個小車,所以不能用線程。如果這個時候還要用線程,則導致資源浪費, 
因為每個線程都有自己的資源,如包工頭(CPU)同一時間要管理這10個工人,而只有一個工人實際在做事。 
線程的銷毀:在銷毀的時候需要考慮一些問題,比如搬磚頭時,你不可能在一個工人搬到一半的時候,你將他銷毀,那磚頭往哪放呢?

1..net里使用線程 
.net里使用線程,用thread類,定義線程,啟動,銷毀,全部包括在這個類里定義一個線程,必須指定這個線程的函數,也就是這個線程是做什么的,搬磚頭呢還是挑水 
EG: 

復制代碼代碼如下:


Thread t = new Thread( new ThreadStart( st.WorkerMethod ) ); 
t.Start (); 
public void WorkerMethod() 

Console.WriteLine ("AA "); 


2.如果使用帶有參數的線程 
線程本身是不能帶參數的,只能在類里定義一個全局變量,線程前先給這個變量賦值,然后在線程的函數里,去使用這個變量,以達到傳參數的目的 
EG: 

復制代碼代碼如下:


public class SimpleThread 

private string procParameter = ""; 
public SimpleThread (string strPara) 

procParameter = strPara; 

public void WorkerMethod() 

Console.WriteLine ("參數輸入為: " + procParameter); 


class MainClass 

/// <summary> 
/// 應用程序的主入口點。 
/// </summary> 
[STAThread] 
static void Main(string[] args) 

SimpleThread st = new SimpleThread("這是參數字符串!"); 
Thread t = new Thread( new ThreadStart( st.WorkerMethod ) ); 
t.Start (); 
t.Join (Timeout.Infinite); 


3.線程和委托 
委托的目的:類似C++的指鐘,就是要把函數當做參數來傳遞 
4.應用程序域 
10個工人各自搬各自的,隔離開,不相互受影響,一個人抱怨不搬了,不影響其他人,電腦里也是一樣的情況,各個應用程序間不能干擾,程序間不能訪問,并且一個程序死了,整個電腦部能死機。 
5.線程池 
就如內存,如果工人搬磚頭,突然有2個工人因為什么原因不能搬了,那么從線程池里調用其他線程來做,性能好,創建一個線程需要浪費時間和資源 
6.異步調用 
調用WebService為例 
同步:調用一個WebService時,調用完了,才執行下面的代碼,如果在調用的時候,阻塞了,那么就要等待很久 
異步調用:調用WebService,代碼繼續往下執行,WebService執行完了后,再傳回到接收器對象。 
7.多線程的應用,利用線程排序 
排序1000個數,如果一個線程排,需要1000毫秒 
如果10個線程排,則只需要大概100毫秒 
當然,排序的時候a[i] a[i+1],同時只能有一個線程對他進行操作 
所以,在For里面,i和i+1交換的時候,需要事先進行鎖定。 

復制代碼代碼如下:


for (int t = 0; t < x; t++)//X為線程數 

Thread thread = new Thread(new ThreadStart(Sort));//Sort排序的方法 
thread.Name = Convert.ToString(t); 
thread.Start(); 

public void Sort() 

try 

while (true) 

swaped = false; 
for (int j = 0; j < valueArray.Length - 1; j++) 

lock (typeof(Thread))//鎖定 

if (valueArray[j] > valueArray[j + 1]) 

int T = valueArray[j]; 
valueArray[j] = valueArray[j + 1]; 
valueArray[j + 1] = T; 
swaped = true; 



Thread.Sleep(1); 
if (!swaped) { break; } 

Thread.CurrentThread.Abort(); 

catch (Exception ex) 

if (Interlocked.Increment(ref threadCounter) == Convert.ToInt64(ddlThreadNum.SelectedItem.ToString().ToString().Trim())) 
Display(); 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: aaa级大片| 国产在线精品成人一区二区三区 | 国产91在线精品狼人 | 久久无码AV亚洲精品色午夜麻豆 | 黑人干亚洲人 | 国产精品毛片无码 | 99re这里只有精品在线观看 | 美女露尿口 | 女同志 videos| 亚洲高清在线视频 | 国产在线91 | 网友自拍咪咪爱 | 国产成人免费高清激情明星 | 亚洲 综合 欧美在线视频 | 和岳m的小说 | juy799大岛优香在线观看 | 236zz宅宅最新伦理 | 日韩一区二区三区四区五区 | 91视频国产自拍 | 校园春色自拍偷拍 | 放荡的女老板bd中文字幕 | 国产精品视频第一区二区 | 欧美国产精品久久 | 亚洲欧洲色图 | 午夜私人影院在线观看 视频 | 国产精品毛片高清在线完整版 | 国产东北三老头伦一肥婆 | 久久热这里面只有精品 | 日本96在线精品视频免费观看 | 国内精品久久久久久野外 | 欧美亚洲国产一区二区三区 | 国产成人免费片在线观看 | 国产精品视频第一区二区 | 玩50岁四川熟女大白屁股直播 | 四虎1515hhc0m | 色综合色狠狠天天综合色 | 性绞姿始动作动态图 | 久久综合狠狠综合久久综合88 | 亚洲天堂在线视频观看 | 日本卡一卡2卡3卡4精品卡无人区 | 啊哈~嗯哼~用力cao我小说 |