色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

微云疏影 ? 來(lái)源:dotNet工控上位機(jī) ? 作者:dotNet工控上位機(jī) ? 2022-08-11 15:47 ? 次閱讀

前言

初學(xué)者學(xué)習(xí)編程時(shí),很容易因?yàn)槎嗑€(xiàn)程出現(xiàn)各種問(wèn)題,導(dǎo)致不敢使用多線(xiàn)程。但是多線(xiàn)程技術(shù)在做開(kāi)發(fā)中,是不可忽視的一個(gè)技術(shù),基本上我們實(shí)際應(yīng)用中,每個(gè)項(xiàng)目都會(huì)使用多線(xiàn)程,所以多線(xiàn)程技術(shù)必須掌握。

為什么要用多線(xiàn)程

隨著工業(yè)的進(jìn)步,現(xiàn)在的筆記本、臺(tái)式機(jī)大都是雙核的,4核、8核甚至16核,也很常見(jiàn),如果是單線(xiàn)程的程序,那么在雙核CPU上就浪費(fèi)了50%,在4核CPU上就浪費(fèi)了75%。

單核CPU上所謂的”多線(xiàn)程”那是假的多線(xiàn)程,同一時(shí)間處理器只會(huì)處理一段邏輯,只不過(guò)線(xiàn)程之間切換得比較快,看著像多個(gè)線(xiàn)程”同時(shí)”運(yùn)行罷了。

多核CPU上的多線(xiàn)程才是真正的多線(xiàn)程,它能讓你的多段邏輯同時(shí)工作,多線(xiàn)程,可以真正發(fā)揮出多核CPU的優(yōu)勢(shì)來(lái),達(dá)到充分利用CPU的目的。

如果你做項(xiàng)目不使用多線(xiàn)程,不僅是技術(shù)的問(wèn)題,也是對(duì)電腦資源的極大浪費(fèi),就像你買(mǎi)了一輛配置非常高的越野車(chē),你僅僅只用它來(lái)日常代步一樣。3

為什么不敢用多線(xiàn)程

之前跟一些學(xué)員溝通時(shí)發(fā)現(xiàn),很多學(xué)員之所以不敢使用多線(xiàn)程,是因?yàn)橹俺鲞^(guò)問(wèn)題,有種“一朝被蛇咬,十年怕井繩”的感覺(jué)。

為什么多線(xiàn)程容易出問(wèn)題,有個(gè)主要的原因在于多線(xiàn)程充滿(mǎn)著“未知性”,有的人使用時(shí),發(fā)現(xiàn)代碼并沒(méi)有按照預(yù)想的流程在走,這其實(shí)是正常的。

我們必須要明確一點(diǎn),多線(xiàn)程確實(shí)是“不可控的”,有某種意義上來(lái)說(shuō),多線(xiàn)程是靠CPU調(diào)度來(lái)執(zhí)行的,并非人為去控制。

我們所謂的控制多線(xiàn)程,僅僅是.NET框架開(kāi)放了一些接口開(kāi)發(fā)者,這樣可以相對(duì)性地間接控制多線(xiàn)程的啟動(dòng)停止暫停繼續(xù)。

線(xiàn)程的啟動(dòng)停止

線(xiàn)程的啟動(dòng)停止,從.Net Framework 4.5開(kāi)始,Task提供了一個(gè)叫CancellationTokenSource的對(duì)象,可以使用它來(lái)對(duì)多線(xiàn)程的啟停進(jìn)行控制。

首先,我們做一個(gè)線(xiàn)程任務(wù),這個(gè)任務(wù)很簡(jiǎn)單,只是不斷操作某個(gè)變量,每0.1秒加1,到一定值之后,重置為0,然后將這個(gè)值顯示在界面上,界面如下所示:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

所以任務(wù)方法如下:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

個(gè)對(duì)象就是CancellationTokenSource的對(duì)象,因此我們需要?jiǎng)?chuàng)建一個(gè)CancellationTokenSource對(duì)象cts:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

然后在啟動(dòng)線(xiàn)程按鈕的事件里,編寫(xiě)代碼如下:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

停止線(xiàn)程按鈕的事件里,只需要調(diào)用cts的Cancel方法即可:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

其實(shí),說(shuō)白了,就是通過(guò)cts來(lái)控制cts的IsCancellationRequested屬性,進(jìn)而實(shí)現(xiàn)多線(xiàn)程的控制。

線(xiàn)程的暫停繼續(xù)

多線(xiàn)程的暫停繼續(xù),.NET為我們提供了另外一個(gè)對(duì)象——ManualResetEvent,這個(gè)對(duì)象會(huì)有一個(gè)值,這個(gè)值是布爾類(lèi)型,就像一個(gè)門(mén)閘一樣,True是打開(kāi)門(mén)閘,F(xiàn)alse是關(guān)閉門(mén)閘,所以想要暫停多線(xiàn)程就調(diào)用這個(gè)對(duì)象的Reset方法,想要繼續(xù)多線(xiàn)程就調(diào)用這個(gè)對(duì)象的Set方法,使用非常簡(jiǎn)單。

首先我們創(chuàng)建一下這個(gè)對(duì)象,可以通過(guò)構(gòu)造方法,給這個(gè)對(duì)象賦初始值,我這里為T(mén)rue,這樣就能直接運(yùn)行,不會(huì)阻塞。

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

但是如果希望這個(gè)對(duì)象與多線(xiàn)程有所聯(lián)系,必須要在多線(xiàn)程的方法里體現(xiàn)這個(gè)對(duì)象的作用,這個(gè)是調(diào)用這個(gè)對(duì)象的WaitOne方法,表示在調(diào)用的地方阻塞住,通過(guò)判斷True或者False來(lái)決定是否繼續(xù)執(zhí)行,就像大家開(kāi)車(chē)過(guò)高速收費(fèi)站一樣,即使現(xiàn)在普遍采用ETC了,在入口也需要減速,有一個(gè)ETC識(shí)別的過(guò)程,識(shí)別成功才會(huì)抬桿,識(shí)別識(shí)別,桿子是不會(huì)自動(dòng)抬起的,這個(gè)是一樣的道理。

所以線(xiàn)程執(zhí)行代碼如下:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

對(duì)比一下,其實(shí)就是加了一個(gè)manual.WaitOne()。

線(xiàn)程暫停代碼:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

線(xiàn)程繼續(xù)代碼:

多線(xiàn)程啟動(dòng)停止暫停繼續(xù)

AutoResetEvent

AutoResetEvent和ManualResetEvent的用法非常相似,區(qū)別在于一個(gè)是手動(dòng),一個(gè)是自動(dòng),AutoResetEvent會(huì)在置位之后自動(dòng)復(fù)位,這樣體現(xiàn)在多線(xiàn)程里,就是會(huì)只執(zhí)行一次,就像大家進(jìn)小區(qū)一樣,如果有10輛車(chē)在排隊(duì),這時(shí)候如果自動(dòng)模式,每次只能進(jìn)一輛車(chē),如果是手動(dòng)模式,可以由保安控制門(mén)閘打開(kāi),等10輛車(chē)都進(jìn)去之后,再由保安將門(mén)閘關(guān)注。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11037

    瀏覽量

    216011
  • 多線(xiàn)程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

    20309
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28822
收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Java多線(xiàn)程的用法

    本文將介紹一下Java多線(xiàn)程的用法。 基礎(chǔ)介紹 什么是多線(xiàn)程 指的是在一個(gè)進(jìn)程中同時(shí)運(yùn)行多個(gè)線(xiàn)程,每個(gè)線(xiàn)程都可以獨(dú)立執(zhí)行不同的任務(wù)或操作。 與單線(xiàn)程
    的頭像 發(fā)表于 09-30 17:07 ?1165次閱讀

    多線(xiàn)程程序,如何設(shè)置停止

    是這樣的,我的程序是多線(xiàn)程的,前面板是4個(gè)獨(dú)立的測(cè)試窗口,程序框圖是4個(gè)while循環(huán),我想在4個(gè)窗口都在等待開(kāi)始測(cè)試時(shí),可以停止整個(gè)程序,前面板只設(shè)定一個(gè)停止控件,哪位能提供下好的思路,謝謝了。
    發(fā)表于 10-20 11:39

    多線(xiàn)程解決思路一

    使用方法節(jié)點(diǎn)實(shí)現(xiàn)多線(xiàn)程,兩個(gè)線(xiàn)程之間的數(shù)據(jù)傳輸也都使用方法節(jié)點(diǎn)的方式實(shí)現(xiàn)。1、初始化時(shí)打開(kāi)另一個(gè)線(xiàn)程。2、程序運(yùn)行過(guò)程中實(shí)現(xiàn)對(duì)被調(diào)線(xiàn)程的實(shí)施讀寫(xiě)。3、Write data按下后寫(xiě)入對(duì)應(yīng)
    發(fā)表于 07-06 17:21

    設(shè)計(jì)多線(xiàn)程和多核系統(tǒng)

    如果您的微控制器應(yīng)用程序需要處理數(shù)字音頻,請(qǐng)考慮采用多線(xiàn)程方法。使用多線(xiàn)程設(shè)計(jì)方法可以使設(shè)計(jì)者以簡(jiǎn)單的方式重用其部分設(shè)計(jì)。
    發(fā)表于 08-14 15:42 ?9次下載
    設(shè)計(jì)<b class='flag-5'>多線(xiàn)程</b>和多核系統(tǒng)

    linux多線(xiàn)程編程技術(shù)

    1 引言 線(xiàn)程(thread)技術(shù)早在60年代就被提出,但真正應(yīng)用多線(xiàn)程到操作系統(tǒng)中去,是在80年代中期,solaris是這方面的佼佼者。傳統(tǒng)的 Unix也支持線(xiàn)程的概念,但是在一個(gè)進(jìn)程
    發(fā)表于 10-24 16:01 ?5次下載

    多線(xiàn)程好還是單線(xiàn)程好?單線(xiàn)程多線(xiàn)程的區(qū)別 優(yōu)缺點(diǎn)分析

    摘要:如今單線(xiàn)程多線(xiàn)程已經(jīng)得到普遍運(yùn)用,那么到底多線(xiàn)程好還是單線(xiàn)程好呢?單線(xiàn)程多線(xiàn)程的區(qū)別又
    發(fā)表于 12-08 09:33 ?8.2w次閱讀

    mfc多線(xiàn)程編程實(shí)例及代碼,mfc多線(xiàn)程間通信介紹

    摘要:本文主要以MFC多線(xiàn)程為中心,分別對(duì)MFC多線(xiàn)程的實(shí)例、MFC多線(xiàn)程之間的通信展開(kāi)的一系列研究,下面我們來(lái)看看原文。
    發(fā)表于 12-08 15:23 ?1.8w次閱讀
    mfc<b class='flag-5'>多線(xiàn)程</b>編程實(shí)例及代碼,mfc<b class='flag-5'>多線(xiàn)程</b>間通信介紹

    什么是多線(xiàn)程編程?多線(xiàn)程編程基礎(chǔ)知識(shí)

    摘要:多線(xiàn)程編程是現(xiàn)代軟件技術(shù)中很重要的一個(gè)環(huán)節(jié)。要弄懂多線(xiàn)程,這就要牽涉到多進(jìn)程。本文主要以多線(xiàn)程編程以及多線(xiàn)程編程相關(guān)知識(shí)而做出的一些結(jié)論。
    發(fā)表于 12-08 16:30 ?1.3w次閱讀

    Linux下的多線(xiàn)程編程

    線(xiàn)程呢?使用多線(xiàn)程到底有哪些好處?什么的系統(tǒng)應(yīng)該選用多線(xiàn)程?我們首先必須回答這些問(wèn)題。  使用多線(xiàn)程的理由之一是和進(jìn)程相比,它是一種非常"節(jié)儉"的多任務(wù)操作方式。我們知道,在Linux
    發(fā)表于 04-02 14:43 ?693次閱讀

    LabWindows CVI中的多線(xiàn)程技術(shù)的詳細(xì)資料說(shuō)明

    ,應(yīng)用程序可以隨 時(shí)被暫停。使用多線(xiàn) 程技術(shù),應(yīng)用程序可 以把它的任務(wù)分配到 單獨(dú)的線(xiàn)程中執(zhí)行。 在多線(xiàn)程程序中,操 作系統(tǒng)讓一個(gè)線(xiàn)程的 代碼執(zhí)行一段時(shí)間(被稱(chēng)為時(shí)間片) 后,會(huì)切換到
    發(fā)表于 10-15 17:24 ?29次下載

    SpringBoot實(shí)現(xiàn)多線(xiàn)程

    SpringBoot實(shí)現(xiàn)多線(xiàn)程
    的頭像 發(fā)表于 01-12 16:59 ?2121次閱讀
    SpringBoot實(shí)現(xiàn)<b class='flag-5'>多線(xiàn)程</b>

    Linux中多線(xiàn)程編程的知識(shí)點(diǎn)

    Hello、Hello大家好,我是木榮,今天我們繼續(xù)來(lái)聊一聊Linux中多線(xiàn)程編程中的重要知識(shí)點(diǎn),詳細(xì)談?wù)?b class='flag-5'>多線(xiàn)程中同步和互斥機(jī)制。
    發(fā)表于 04-26 17:27 ?703次閱讀
    Linux中<b class='flag-5'>多線(xiàn)程</b>編程的知識(shí)點(diǎn)

    labview AMC多線(xiàn)程

    labview_AMC多線(xiàn)程
    發(fā)表于 08-21 10:31 ?33次下載

    多線(xiàn)程如何保證數(shù)據(jù)的同步

    多線(xiàn)程編程是一種并發(fā)編程的方法,意味著程序中同時(shí)運(yùn)行多個(gè)線(xiàn)程,每個(gè)線(xiàn)程可獨(dú)立執(zhí)行不同的任務(wù),共享同一份數(shù)據(jù)。由于多線(xiàn)程并發(fā)執(zhí)行的特點(diǎn),會(huì)引發(fā)數(shù)據(jù)同步的問(wèn)題,即保證多個(gè)
    的頭像 發(fā)表于 11-17 14:22 ?1574次閱讀

    mfc多線(xiàn)程編程實(shí)例

    (圖形用戶(hù)界面)應(yīng)用程序的開(kāi)發(fā)。在這篇文章中,我們將重點(diǎn)介紹MFC中的多線(xiàn)程編程。 多線(xiàn)程編程在軟件開(kāi)發(fā)中非常重要,它可以實(shí)現(xiàn)程序的并發(fā)執(zhí)行,提高程序的效率和響應(yīng)速度。MFC提供了豐富的多線(xiàn)程支持,可以輕松地實(shí)現(xiàn)
    的頭像 發(fā)表于 12-01 14:29 ?1827次閱讀
    主站蜘蛛池模板: 亚洲美女视频高清在线看 | 草莓在线观看 | 国产精品高清m3u8在线播放 | 精品免费视在线视频观看 | 乱亲女H秽乱长久久久 | 99热在线观看精品 | 香蕉久久日日躁夜夜嗓 | 欧美 日韩 无码 有码 在线 | 老师的玉足高跟鞋满足我 | 国产乱辈通伦影片在线播放亚洲 | 日韩一区二区三区射精 | 女教师跟黑人男朋友激情过后 | 被窝伦理电影午夜 | 中文字幕 亚洲 有码 在线 | 性色无码AV久久蜜臀 | 性女传奇快播 | 日韩欧美视频一区二区在线观看 | 好大快用力深一点h视频 | chinesetoilet美女沟 | 中国老太婆xxxxx | 最好看中文字幕国语 | 中文字幕亚洲无限码 | 九九免费的视频 | 精品国产国偷自产在线观看 | 中文字幕无线观看不卡网站 | 蜜桃日本免费观看MV | 亚洲国产五月综合网 | 亚洲精品久久久无码AV片软件 | 最新无码国产在线视频 | 久草草在线视视频 | 国产午夜精品一区理论片飘花 | 午夜dj影院视频观看 | 亚洲国产系列一区二区三区 | 欧美另类极品videosbest | 色女仆影院 | 黑人猛挺进小莹的体内视频 | 久久国产精品麻豆AV影视 | 国产精品99久久久久久宅男AV | 亚洲欧美日韩中字视频三区 | 沈阳熟女露脸对白视频 | 麻豆高清区在线 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品