亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C#線程實(shí)驗(yàn)探究

        2021-06-28 10:59:54劉毓聶思兵楊濟(jì)寧
        山西電子技術(shù) 2021年3期
        關(guān)鍵詞:進(jìn)度條內(nèi)江線程

        劉毓,聶思兵,楊濟(jì)寧

        (1.內(nèi)江師范學(xué)院計(jì)算機(jī)科學(xué)學(xué)院(人工智能學(xué)院),四川 內(nèi)江 641100;2.珠海博聞教育科技發(fā)展有限公司,廣東 珠海 519000;3.內(nèi)江職業(yè)技術(shù)學(xué)院,四川 內(nèi)江 641111)

        1 概述

        程序執(zhí)行流的最小執(zhí)行單位,是行程中的實(shí)際運(yùn)作單位,是進(jìn)程中的實(shí)際運(yùn)作單位[1];是進(jìn)程中按順序執(zhí)行的控制流,每條線程承擔(dān)各自的任務(wù),一個進(jìn)程中可以并發(fā)多個線程[2]。線程間通信主要通過共享內(nèi)存,上下文切換很快,資源開銷較少,但相比進(jìn)程不夠穩(wěn)定容易丟失數(shù)據(jù)。

        為提高程序的可靠性,簡化編程代碼,實(shí)現(xiàn)程序并發(fā)執(zhí)行線程,線程采用代碼與代碼之間的隔離技術(shù)。由此可見,合理安排線程實(shí)驗(yàn),對于C# 的實(shí)驗(yàn)有重要意義。

        討論C#線程實(shí)驗(yàn),目的就是通過實(shí)驗(yàn)讓學(xué)生掌握線程的創(chuàng)建與控制,包括創(chuàng)建線程、暫停和恢復(fù)線程、終止線程、設(shè)置線程執(zhí)行的優(yōu)先級,線程的同步方法。

        2 C# 實(shí)現(xiàn)線程的常用方式

        2.1 Thread類實(shí)現(xiàn)

        在C#語言中線程(Thread)是包含在進(jìn)程中的,它位于 System.Threading 命名空間中,線程的創(chuàng)建以及執(zhí)行使用hread 類。

        Thread類的實(shí)現(xiàn)方式,關(guān)鍵代碼如下:

        public void TestThread()

        {

        Thread thread = new Thread( TestAction);

        //設(shè)置屬性

        thread.IsBackground = true;

        thread.Name = "Test";

        //啟動線程 thread.Start();

        }

        private void TestAction()

        {

        //處理相關(guān)業(yè)務(wù)

        }

        主要操作步驟為:設(shè)置相關(guān)屬性new Thread(TestAction);啟動 thread.Start();處理的相關(guān)業(yè)務(wù);執(zhí)行相關(guān)業(yè)務(wù)操作等。

        2.2 ThreadPool 線程池實(shí)現(xiàn)

        需要創(chuàng)建的線程很多,且都是比較小的線程的情況下,可以使用線程池(ThreadPool類)。ThreadPool是一個靜態(tài)方法,提供了對一個線程集合的操作,它會在線程數(shù)不足時增加線程,空閑線程數(shù)過多時釋放資源。ThreadPool 線程池實(shí)現(xiàn)的關(guān)鍵,有如下幾步:

        設(shè)置相關(guān)屬性;通過線程池自動分配線程執(zhí)行對應(yīng)的業(yè)務(wù)功能;實(shí)現(xiàn)線程處理的相關(guān)業(yè)務(wù);執(zhí)行相關(guān)業(yè)務(wù)操作等。

        2.3 Delegate 實(shí)現(xiàn)的多線程

        delegate由于需要不斷的實(shí)例化,委托類將會消耗cup 和內(nèi)存,其關(guān)鍵代碼如下:

        private void TestAction()

        {

        //處理相關(guān)業(yè)務(wù)

        }

        ///

        ///子線程回調(diào)

        ///

        private void CallBack(IAsyncResultar)

        {

        }

        除此之外,還有Task 實(shí)現(xiàn)多線程,Parallel實(shí)現(xiàn)多線程等方式,這里不一一贅述。

        3 C#線程實(shí)驗(yàn)的注意事項(xiàng)

        在C#線程編程實(shí)踐發(fā)現(xiàn),單線程最顯著的缺點(diǎn)是,當(dāng)一個事件發(fā)生,程序進(jìn)行一個耗時的運(yùn)算動作時,UI線程會出現(xiàn)假死現(xiàn)象,此時會無視對用戶的響應(yīng)。多個執(zhí)行流是多線程的特點(diǎn),因此為了充分提高CPU的利用率。一個程序中可以同時運(yùn)行和創(chuàng)建多個并行執(zhí)行的線程來完成各自的任務(wù)。

        在多線程程序中,線程的運(yùn)行相互獨(dú)立,互不干擾,從而提高程序的效率。但使用多線程存在諸多不利因素,線程越多占用內(nèi)存也越多,線程越多協(xié)調(diào)和管理越麻煩, CPU需要花更多的時間,也存在訪問共享資源時會彼此干擾,從而導(dǎo)致對他們的控制過程太復(fù)雜。以下兩個問題也得一起注意:

        3.1 操縱一個線程出現(xiàn)的異常

        利用Thread.Start()方法重新啟動線程oThread,但顯然Abort()方法帶來的后果是不可恢復(fù)的終止線程,所以最后程序會拋出ThreadStateException異常。其關(guān)鍵內(nèi)容包括:

        創(chuàng)建一個線程,使之執(zhí)行Beta方法 ,該方法只是通知CPU此線程可以被執(zhí)行,但具體執(zhí)行時機(jī)則由CPU自行決定。

        3.2 線程的優(yōu)先級設(shè)置

        線程的優(yōu)先級設(shè)置應(yīng)滿足以下原則:

        1)當(dāng)線程之間同時需要CPU時,CPU按線程的優(yōu)先級給予服務(wù)。

        2)C#設(shè)計(jì)中,在創(chuàng)建線程時,可以設(shè)置5個不同的線程的優(yōu)先級,不指定優(yōu)先級,則系統(tǒng)為默認(rèn)值ThreadPriority.Normal。

        根據(jù)用戶的響應(yīng)輕重緩急,設(shè)置相應(yīng)的線程的優(yōu)先級,同時CPU會將更多的時間片分給優(yōu)先級高的線程,在相同任務(wù)量的前提下,高優(yōu)先級線程將會較快地完成任務(wù)。

        4 C#多線程的典型應(yīng)用實(shí)驗(yàn)

        多線程編程應(yīng)用廣泛,主要有幾個方面:

        1)即時響應(yīng),后臺線程完成特定操作。

        2)多個線程參與,完成同類任務(wù),提高并發(fā)性能。

        3)一個任務(wù)可以有多個獨(dú)立的步驟,多個線程可以并發(fā)執(zhí)行各子任務(wù),以用來提高任務(wù)處理效率,下面通過兩個例子予以說明。

        a)進(jìn)度條

        圖1 系統(tǒng)方框圖

        分析:頁面動態(tài)刷新,在主頁面正常操作前提下,用后臺線程來實(shí)現(xiàn)進(jìn)度條。

        首先,創(chuàng)建Winform頁面,然后拖入進(jìn)度條控件,篇幅關(guān)系,相關(guān)代碼從略。

        b)網(wǎng)絡(luò)扒蟲

        獲取網(wǎng)絡(luò)資源,網(wǎng)絡(luò)搜索功能實(shí)現(xiàn),都利用了扒蟲程序思想。一般情況下,扒蟲程序耗時大,如果使用多線程編程,將節(jié)約許多時間。篇幅關(guān)系,相關(guān)代碼從略。

        5 總結(jié)

        前面就C#實(shí)現(xiàn)線程的常用方式,C#線程的實(shí)驗(yàn)的注意事項(xiàng),C#多線程的典型應(yīng)用實(shí)驗(yàn)做了初步的討論,關(guān)于C#線程實(shí)驗(yàn)注意的問題還很多,由于篇幅所限,這里不一一贅述。

        文中的部分案例來自網(wǎng)絡(luò),由于出處較多,在此一并向作者致謝!

        猜你喜歡
        進(jìn)度條內(nèi)江線程
        水管接水
        詩潮(2025年2期)2025-03-06 00:00:00
        平安內(nèi)江,幸福的港灣
        四川內(nèi)江:青花椒成為增收新引擎
        為什么進(jìn)度條到99%就不動了
        旗幟文摘(2020年5期)2020-06-09 12:20:12
        為什么進(jìn)度條到99%就不動了
        意林(2020年10期)2020-06-01 07:26:37
        為什么進(jìn)度條到99%就不動了
        知識窗(2020年3期)2020-04-02 07:08:28
        內(nèi)江本土優(yōu)秀傳統(tǒng)文化傳承發(fā)展問題研究
        淺談linux多線程協(xié)作
        內(nèi)江市中區(qū)聯(lián)社:做“小微”金融服務(wù)專業(yè)銀行
        Linux線程實(shí)現(xiàn)技術(shù)研究
        精品人妻码一区二区三区剧情| 精品的一区二区三区| 国产成人精品中文字幕| 水蜜桃精品视频在线观看| 日本艳妓bbw高潮一19| 国产av日韩a∨亚洲av电影| 亚洲国产一区二区三区在观看| 日本女优中文字幕在线播放| 国产精品精品自在线拍| 人人妻人人添人人爽日韩欧美| aⅴ色综合久久天堂av色综合| 午夜免费观看国产视频| 国内女人喷潮完整视频| 中文字幕亚洲欧美日韩在线不卡| 成人午夜视频在线观看高清| 日本黑人亚洲一区二区| 帮老师解开蕾丝奶罩吸乳视频| 亚洲色大成网站www在线观看 | 免费一级特黄欧美大片久久网| 国产精品国产三级国产an| 国产饥渴的富婆一凶二区| 免费a级毛片18以上观看精品| 亚洲国产精品自拍一区| 国产大学生自拍三级视频| 老女老肥熟女一区二区| 色欲av自慰一区二区三区| 亚洲性69影视| 亚洲av色福利天堂久久入口| 国产伦精品一区二区三区妓女| xxxx国产视频| 免费在线av一区二区| 好吊妞视频这里有精品| 日本不卡在线视频二区三区| 亚洲AV无码AV色| 加勒比精品视频在线播放| 国产深夜男女无套内射| 午夜精品一区二区三区无码不卡| 国产伦理一区二区久久精品| 亚洲日韩欧美一区、二区| 色老头一区二区三区| av免费在线观看在线观看|