濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > .NET Windows 多線程thread編程

.NET Windows 多線程thread編程

熱門(mén)標(biāo)簽:使用智能電話機(jī)器人違法嗎 太原外呼電銷(xiāo)機(jī)器人費(fèi)用 保山電話外呼管理系統(tǒng)怎么用 淘寶地圖標(biāo)注如何做 蘇州銷(xiāo)售外呼系統(tǒng)預(yù)算 外呼系統(tǒng)用員工身份證 東莞語(yǔ)音電銷(xiāo)機(jī)器人排名 電話機(jī)器人廣告話術(shù) 朝陽(yáng)市地圖標(biāo)注
進(jìn)程:工廠搬磚頭,10個(gè)工人搬完1000個(gè)磚頭
線程:每個(gè)工人,搬完100個(gè)磚頭,就是一個(gè)任務(wù)
采用線程,異步搬:
手工去搬,10個(gè)工人同時(shí)搬,效率高,異步執(zhí)行,如果不采用線程,等第一個(gè)人搬完后第二個(gè)人才搬,那就慢了

什么時(shí)候不能用線程
如果要用小車(chē)來(lái)搬,只有一個(gè)小車(chē),那么,在這樣的情況下,就不應(yīng)該用線程,因?yàn)橹挥幸粋€(gè)小車(chē),各個(gè)線程都在爭(zhēng)奪和等待這個(gè)小車(chē),所以不能用線程。如果這個(gè)時(shí)候還要用線程,則導(dǎo)致資源浪費(fèi),
因?yàn)槊總€(gè)線程都有自己的資源,如包工頭(CPU)同一時(shí)間要管理這10個(gè)工人,而只有一個(gè)工人實(shí)際在做事。
線程的銷(xiāo)毀:在銷(xiāo)毀的時(shí)候需要考慮一些問(wèn)題,比如搬磚頭時(shí),你不可能在一個(gè)工人搬到一半的時(shí)候,你將他銷(xiāo)毀,那磚頭往哪放呢?

1..net里使用線程
.net里使用線程,用thread類(lèi),定義線程,啟動(dòng),銷(xiāo)毀,全部包括在這個(gè)類(lèi)里定義一個(gè)線程,必須指定這個(gè)線程的函數(shù),也就是這個(gè)線程是做什么的,搬磚頭呢還是挑水
EG:
復(fù)制代碼 代碼如下:

Thread t = new Thread( new ThreadStart( st.WorkerMethod ) );
t.Start ();
public void WorkerMethod()
{
Console.WriteLine ("AA ");
}

2.如果使用帶有參數(shù)的線程
線程本身是不能帶參數(shù)的,只能在類(lèi)里定義一個(gè)全局變量,線程前先給這個(gè)變量賦值,然后在線程的函數(shù)里,去使用這個(gè)變量,以達(dá)到傳參數(shù)的目的
EG:
復(fù)制代碼 代碼如下:

public class SimpleThread
{
private string procParameter = "";
public SimpleThread (string strPara)
{
procParameter = strPara;
}
public void WorkerMethod()
{
Console.WriteLine ("參數(shù)輸入為: " + procParameter);
}
}
class MainClass
{
/// summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// /summary>
[STAThread]
static void Main(string[] args)
{
SimpleThread st = new SimpleThread("這是參數(shù)字符串!");
Thread t = new Thread( new ThreadStart( st.WorkerMethod ) );
t.Start ();
t.Join (Timeout.Infinite);
}
}

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

for (int t = 0; t x; t++)//X為線程數(shù)
{
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();
}
}
您可能感興趣的文章:
  • C#(asp.net)多線程用法示例(可用于同時(shí)處理多個(gè)任務(wù))
  • .NET Framework中定時(shí)器timer的單線程與多線程使用講解
  • .net面向?qū)ο笾嗑€程(Multithreading)及 多線程高級(jí)應(yīng)用
  • 使用.Net實(shí)現(xiàn)多線程經(jīng)驗(yàn)總結(jié)
  • 一些.NET對(duì)多線程異常處理技巧分享
  • asp.net 計(jì)劃任務(wù)管理程序?qū)崿F(xiàn),多線程任務(wù)加載
  • c#.net多線程編程教學(xué)——線程同步
  • ASP.NET:一段比較經(jīng)典的多線程學(xué)習(xí)代碼
  • .Net多線程編程(誤用點(diǎn)分析)

標(biāo)簽:阿里 運(yùn)城 洛陽(yáng) 綏化 克拉瑪依 西藏 呼倫貝爾 潛江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《.NET Windows 多線程thread編程》,本文關(guān)鍵詞  .NET,Windows,多,線程,thread,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《.NET Windows 多線程thread編程》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于.NET Windows 多線程thread編程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    温泉县| 闽清县| 扶绥县| 德格县| 达尔| 湖口县| 洮南市| 乌海市| 深泽县| 清水县| 柘城县| 绍兴市| 东明县| 永安市| 义马市| 无锡市| 平塘县| 喀什市| 博乐市| 邯郸市| 香格里拉县| 青浦区| 阿尔山市| 海阳市| 百色市| 达拉特旗| 彭山县| 连城县| 玉龙| 阿图什市| 阜新市| 望都县| 青海省| 丰原市| 西乡县| 儋州市| 鄂尔多斯市| 潮州市| 当涂县| 克拉玛依市| 肃北|