亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

c#多線程隨記回顧

系統 2476 0

C#多線程隨記回顧

1.創建多線程方式知道的有三種:

?---手動創建Thread、使用線程池、使用task任務

---手動創建Thread,分兩種帶參數和不帶參數的幫助委托器

eg:? //幫助器委托不帶參數

??????? //??? ThreadStart ts = new ThreadStart(DoWork)

??????? //??? for (int i = 1; i <= 3; i++)

??????? //??? {

??????? //??????? Thread t = new Thread(ts);

??????? //??????? t.Name = "線程"+i.ToString() ;

??????? //??????? t.Start();

??????? //??? }

??????? //??? Console.Read();

? eg://幫助器委托帶參數

??????????? ParameterizedThreadStart ts = new ParameterizedThreadStart(DoWork);

??????????? for (int i = 1; i <= 3; i++)

??????????? {

??????????????? Thread t = new Thread(ts);

??????????????? t.Name = "線程" + i.ToString();

??????????????? t.Start(5);??????????? }

??????????? Console.Read();

-------回調方法:

//委托

f = new FDeletate(Fibonacci);

??????????? AsyncCallback callback = new AsyncCallback(Display);//回調委托

??????????? int n = Convert.ToInt32(Console.ReadLine());

??????????? f.BeginInvoke(n, callback,"ggds");

??????????? Console.ReadLine();

--回調方法; = f.EndInvoke(r);將結果返回

? static void Display(IAsyncResult r)

??????? {

??????????? int result = f.EndInvoke(r);

??????????? Console.WriteLine("第"+r.AsyncState+"項值是"+result);

??????????? Console.Read();

??????? }

-----------補充線程:

----線程是windows任務調度最小的單位,線程是程序的一個執行流;

cpu切換的不是進程而是線程。進程占用資源太多;

--單核cpu一個時間只有一個線程;一個exe就是一個進程;

一個線程對應一個寄存器;

--Process.Start("");

---一個應用程序與只能承載一個exe,可承載多個dll;

---一個進程可以有多個應用程序域;

--一個線程可穿透多個應用程序與,

同一時間一個線程指正屬于一個應用程序域;

一個應用程序與可以跑多個線程;

==一個應用程序與有一個上下文;

----當前線程:

?Thread t = Thread.CurrentThread;

t.name;

-----

?? //后臺線程;

?? t.IsBackground = true;

--thrad線程是clr線程和操作系統線程是不一樣的;之間是映射關系;

線程終止:Thread.abort();

前臺線程和后臺線程。這兩者的區別就是:應用程序必須運行完所有的前臺線程才可以退出;而對于后臺線程,應用程序則可以不考慮其是否已經運行完畢而直接退出,所有的后臺線程在應用程序退出時都

---會自動結束。

---默認為前臺線程,thread.isbackground=false;

--線程優先級:AboveNormal;

?//默認優先級:為AboveNormal;

??????????? Thread t = Thread.CurrentThread;

??????????? t.Priority = ThreadPriority.AboveNormal;

-----初始化一個線程:需要1M內存;

委托穿多個參數時,可以用list<object>

------windows窗體跨線程調用時,控制不能跨線程需要設置:

Control.checkForIllegalcrossThreadcalls=false;不檢查,則能跨線程

-----lamed:

匿名函數:Cal是委托;

Cal c = new Cal((a, b) => { return a + b; });

如果沒有參數:

Cal c = new Cal(() => { return 123; });

Cal c = new Cal((a, b) => { return a + b; });

IAsyncResult result = c.BeginInvoke(1, 2, null, null);

//阻塞線程;

int cc = c.EndInvoke(result);

??????????????? Console.WriteLine(cc);

??????????? Console.Read();

----cc為返回結果;

------------------------------------第二種通過線程池來創建:

----------lock鎖:lock內的變量是引用類型;操作公共資源時只讓一個線程來操作,進行線程隔離和線程的同步(無論哪個線程訪問都是的結果,比如+1操作);比如一個數組,否則會出

?

現超出索引;

lock()--:其實內部為monitor

{

?

}

---創建一個實例,會在一個應用程序域創建(類空間、同步索引快(默認為-1,類型指針(指向該實例的類型));

提到對象池,就應該想到lock;

---以后調用線程的時候就用線程池;guo方法是object類型;這樣比穿件Thread簡單多了;

?? //線程池:ThreadPool.QueueUserWorkItem(new WaitCallbac(guo), "");

---線程池原理,將任務加載到隊列排隊,在進入到本地隊列讓cpu執行;

?? {

?? ThreadPool.QueueUserWorkItem(new WaitCallback(guo), "");

??????????? Console.Write("主線程");

??????????? Console.Read();

??????? }

??????? public static void guo(object i)

??????? {

??????????? Thread.Sleep(3000);

??????????? Console.WriteLine("sfsdf");

??????? }

---死鎖:相互等待對方釋放資源;

---委托如果是無參,有返回值,那么匿名函數,應該為 ()=>{};;

--------3.使用task任務;

????????? Task<string> ta = new Task<string>(() => {

??????????????? System.Threading.Thread.Sleep(2000);

??????????????? Console.WriteLine("sfsf");

??????????????? return "";

??????????? });

??????????? ta.Start();

??????????? Console.Write("主線程");

??????????? Console.Read();

--

--task任務,可以使用 ta.Wait();來阻塞主線程,讓子線程執行完,在執行;

--Thread t = new Thread(() => { });

? t.Join();//相當于ta.Wait();

c#多線程隨記回顧


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲日韩精品欧美一区二区一 | 999精品免费视频观看 | 国产免费一区二区 | 91精品久久久久久久久久 | 国产99r视频精品免费观看 | 免费人成年短视频在线观看网站 | 中文字幕不卡免费高清视频 | 久久美女免费视频 | 亚洲第一页色 | 日韩视频在线观看一区二区 | 在线国产你懂的 | 狠狠色噜噜狠狠狠狠69 | 欧美做爰xxxⅹ在线视频hd | 离线枕边人国语在线影视 | 色老头福影院韩国激情影院 | 中文字幕在线视频不卡 | 亚洲精品中文字幕字幕 | 亚洲久久在线 | 国产网址在线观看 | 91亚洲精品久久91综合 | 亚洲最大视频网站 | 国产精品女仆装在线播放 | 欧美肥老太婆交 | 一级毛片不收费 | 免费一级欧美毛片 | 愉拍自拍视频在线播放 | 我要操影院| 国产香蕉偷在线观看视频 | 亚洲精品一区二区久久 | 国产91小视频 | 在线播放69热精品视频 | 久久精品国产99国产精品亚洲 | 亚洲免费午夜视频 | 伊人久久精品亚洲午夜 | 日本一区二区三区在线观看 | 中文字幕亚洲综合久久男男 | 日韩一级黄色录像 | 成人欧美一区二区三区在线 | 欧美一级毛片欧美一级无片 | 全黄一级裸片视频免费 | 亚洲精品美女久久久久网站 |