激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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(); 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 在线播放免费视频 | 国产大片免费看 | 久久影院免费观看 | 欧美亚洲黄色 | 精品久久一区二区 | 欧美亚洲另类在线 | 免费一区区三区四区 | 欧美日韩电影 | 国产精品久久久在线观看 | 国产又粗又爽又深的免费视频 | 女人叉开腿让男人桶 | 在线看免费观看日本 | 久久精品99久久久久久2456 | 免费永久看羞羞片网站入口 | 农村寡妇偷毛片一级 | 综合成人在线 | av在线免费看网址 | 美女毛片儿 | 免费激情视频网站 | 性插视频 | 久久久精品综合 | 国产精品久久久久久久久久久久久久久 | 欧美三级美国一级 | 国产毛片视频在线 | 久久久一区二区三区精品 | 99精品欧美一区二区 | 国内精品久久久久久2021浪潮 | 欧美特黄一级高清免费的香蕉 | 九九热九九 | 国产精品久久久久久久久久久久午夜 | 一区在线看| 一级做a爱片性色毛片 | 免费的毛片| 宅男噜噜噜66国产免费观看 | 日韩欧美高清一区 | 国产在线精品一区二区三区不卡 | chinesehdxxxx实拍| 欧美成人精品不卡视频在线观看 | xxxⅹ96日本护士hd | 欧美日韩高清一区二区三区 | 国产精品高潮视频 |