国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET Windows 多線程thread編程

2024-07-10 12:41:12
字體:
來源:轉載
供稿:網友
進程:工廠搬磚頭,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時,調用完了,才執行下面的代碼,如果在調用的時候,阻塞了,那么就要等待很久
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峨县| 杭州市| 大邑县| 嘉黎县| 永修县| 海林市| 永靖县| 马公市| 常山县| 普格县| 涞源县| 阿拉善右旗| 东城区| 突泉县| 麦盖提县| 高雄市| 施甸县| 涟源市| 正阳县| 曲阳县| 启东市| 开阳县| 保定市| 常德市| 浪卡子县| 精河县| 龙井市| 西林县| 开远市| 土默特左旗| 东莞市| 谷城县| 汉源县| 礼泉县| 吉安县| 徐汇区| 织金县| 威远县| 尼勒克县| 遵义县| 南丹县|