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

        ?

        多線程技術(shù)在云存儲(chǔ)視圖庫(kù)中的應(yīng)用

        2015-03-19 03:00:37尹莉莉
        新媒體研究 2015年15期
        關(guān)鍵詞:線程對(duì)象界面

        尹莉莉

        安徽四創(chuàng)電子股份有限公司,安徽合肥 230088

        1 多線程的同步技術(shù)

        開(kāi)發(fā)人員在進(jìn)行多線程編程時(shí),為了使得各個(gè)線程能夠協(xié)同工作,必須要用到線程同步技術(shù)。下面將針對(duì)臨界區(qū)、事件及互斥對(duì)象這幾種windows線程的同步技術(shù)進(jìn)行介紹。

        1.1 臨界區(qū)對(duì)象

        臨界區(qū)其實(shí)就是一段代碼,它的作用就是控制共享資源不被同時(shí)訪問(wèn),比如一個(gè)線程進(jìn)入臨界區(qū)訪問(wèn)共享資源后,其他想訪問(wèn)該共享資源的線程將被拒絕訪問(wèn),處于掛起狀態(tài),直到臨界區(qū)釋放后,其他線程才可以繼續(xù)搶占。利用臨界區(qū)對(duì)象控制線程同步的方法如下。

        1)定義臨界區(qū)對(duì)象,該對(duì)象是全局變量。

        CRITICAL_SECTION g_s;

        2)初始化臨界區(qū)對(duì)象。

        InitializeCriticalSection(&g_s);

        3)進(jìn)入臨界區(qū)。

        EnterCriticalSection(&g_s);

        4)釋放臨界區(qū)。

        LeaveCriticalSection(&g_s);

        1.2 事件對(duì)象

        事件對(duì)象是一種抽象的對(duì)象,有受信和未受信兩種狀態(tài),一般和WaitForSingleObject函數(shù)一起使用,該函數(shù)根據(jù)事件的受信狀態(tài)來(lái)判斷是否讓線程訪問(wèn)該共享數(shù)據(jù)。利用事件對(duì)象來(lái)保持線程同步的方法如下。

        1)創(chuàng)建事件內(nèi)核對(duì)象并保存事件對(duì)象的句柄。

        HANDLE g_hEvent;//全局變量。

        g_hEvent = CreateEvent(NULL,FALSE,FALSE,FALSE,NULL);

        createEvent函數(shù)可根據(jù)參數(shù)傳入的不同,來(lái)決定是否需要手動(dòng)重置事件對(duì)象,同時(shí)也可以決定事件創(chuàng)建的初始狀態(tài),即受信還是未受信。

        2)更改事件對(duì)象的狀態(tài)。

        SetEvent(g_hEvent);//設(shè)置事件狀態(tài)為受信狀態(tài)

        ReleaseEvent(g_Event);//設(shè)置事件狀態(tài)為無(wú)信號(hào)狀態(tài)

        3)使用WaitForSingleObject函數(shù)來(lái)控制線程對(duì)共享資源的訪問(wèn)。

        WaitForSingleObject(g_hEvent,INFINITE);

        當(dāng)事件對(duì)象是受信狀態(tài)時(shí),則該線程可以訪問(wèn)共享資源。

        1.3 互斥內(nèi)核對(duì)象

        互斥對(duì)象也是一種內(nèi)核對(duì)象,其與前面兩種保持同步的方法類似,利用該技術(shù)進(jìn)行線程同步的方法如下。

        1.3.1 創(chuàng)建互斥對(duì)象并保存對(duì)象句柄

        HANDLE g_hMutex;//全局變量

        g_hMutex = CreateMutex(NULL,FALSE,NULL);//第二個(gè)參數(shù)一般設(shè)置為false,表示該對(duì)象沒(méi)有被任何線程所占用。

        1.3.2 在線程函數(shù)中使用WaitForSingleObject

        WaitForSingleObject(g_hEvent,INFINITE);

        1.3.3 釋放互斥對(duì)象

        ReleaseMutex(g_hMutex);

        2 多線程的優(yōu)缺點(diǎn)

        任何東西都有它的兩面性,同樣多線程也是一把雙刃劍,有它的優(yōu)點(diǎn)也有它的缺點(diǎn)。

        首先,多線程的優(yōu)點(diǎn)如下。

        1)提高界面程序響應(yīng)速度。

        當(dāng)一個(gè)程序既要執(zhí)行耗時(shí)的任務(wù),又要更新窗口及接受相關(guān)界面操作時(shí),如云存儲(chǔ)視圖庫(kù)的客戶端界面程序,如果該程序是單線程程序,則會(huì)導(dǎo)致界面的卡死,從用戶的角度來(lái)說(shuō),這個(gè)應(yīng)用程序就像處于無(wú)響應(yīng)狀態(tài)一樣。如果程序是多線程程序,可以把耗時(shí)任務(wù),比如視頻的點(diǎn)播,文件的上傳下載等傳遞給后臺(tái)線程,當(dāng)后臺(tái)線程在執(zhí)行這些功能的時(shí)候,主線程就可以及時(shí)的處理用戶對(duì)界面的操作請(qǐng)求,從用戶的體驗(yàn)感上來(lái)講,程序的響應(yīng)速度就比單線程要快的多。

        2)資源利用率高。

        因?yàn)殡娔X的工作原理是輪轉(zhuǎn)時(shí)間片進(jìn)行操作,而操作系統(tǒng)中分配時(shí)間片的操作是以線程為準(zhǔn)的,對(duì)比實(shí)現(xiàn)同樣功能的多線程程序和單線程程序,多線程程序被分配的時(shí)間片就比單線程程序多了,從而cpu在它上面花費(fèi)的時(shí)間就多了,這就充分的利用了cpu資源。比如上傳下載文件,當(dāng)用戶上傳第一個(gè)文件時(shí),cpu會(huì)等待第一個(gè)文件上傳完成,如果接下來(lái)繼續(xù)上傳其他文件,cpu在上傳文件的同時(shí)就可以對(duì)已上傳完成的文件進(jìn)行下載了,因?yàn)樵趫?zhí)行文件上傳時(shí),cpu還有很多空閑的時(shí)間,可以給下載線程分配一定的時(shí)間片來(lái)執(zhí)行下載,從而提高了cpu資源的利用率。

        其次,多線程的缺點(diǎn)如下。

        1)設(shè)計(jì)復(fù)雜。

        有一些多線程應(yīng)用程序比單線程的應(yīng)用程序要簡(jiǎn)單,但是一般情況下多線程的設(shè)計(jì)還是更復(fù)雜一點(diǎn),尤其當(dāng)多個(gè)線程共享進(jìn)程數(shù)據(jù)的時(shí)候,需要用到同步技術(shù),處理不當(dāng)就有可能造成線程的死鎖。

        2)頻繁切換上下文的開(kāi)銷。

        Cpu是通過(guò)分配時(shí)間片來(lái)控制線程的交替執(zhí)行的,當(dāng)一個(gè)線程的時(shí)間片被用完時(shí),cpu就要準(zhǔn)備從該線程切換到下一個(gè)被分配到時(shí)間片的線程,此時(shí)就需要cpu記錄當(dāng)前線程的相關(guān)信息,如線程的相關(guān)數(shù)據(jù),程序的地址等,這些操作完成后,cpu才可以載入另一個(gè)線程的相關(guān)數(shù)據(jù)開(kāi)始執(zhí)行。由此可知,如果程序是多線程程序,由于線程數(shù)量較多,系統(tǒng)將會(huì)花費(fèi)大量的時(shí)間來(lái)處理線程的頻繁切換,這就可能降低程序的執(zhí)行效率。

        3)資源消耗的增加。

        多線程程序在充分利用cpu資源的情況下,也會(huì)加大對(duì)資源的消耗量,因?yàn)槊總€(gè)線程都要有自己的一個(gè)堆棧,這就加大了對(duì)內(nèi)存的使用,同時(shí)程序還需要一些資源來(lái)管理線程,這些都導(dǎo)致了資源消耗的增加。

        3 結(jié)論

        綜上可知,多線程的使用有利有弊,在軟件開(kāi)發(fā)中,到底需不需要用到多線程編程需要考慮很多因素,也需要結(jié)合程序功能的實(shí)際情況。一般情況下,多線程技術(shù)在項(xiàng)目開(kāi)發(fā)中還是得到了廣泛應(yīng)用,因?yàn)樵诖蠖鄶?shù)項(xiàng)目開(kāi)發(fā)中,多線程的優(yōu)勢(shì)還是明顯大于劣勢(shì)的。

        [1]王艷平,Windows程序設(shè)計(jì)[M].2版.北京:人民郵電出版社,2008.

        [2]章秦.Win32多線程同步技術(shù)淺析[J].電子設(shè)計(jì)工程,2011.

        猜你喜歡
        線程對(duì)象界面
        神秘來(lái)電
        睿士(2023年2期)2023-03-02 02:01:09
        國(guó)企黨委前置研究的“四個(gè)界面”
        攻略對(duì)象的心思好難猜
        意林(2018年3期)2018-03-02 15:17:24
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開(kāi)發(fā)方法研究
        淺談linux多線程協(xié)作
        人機(jī)交互界面發(fā)展趨勢(shì)研究
        基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
        區(qū)間對(duì)象族的可鎮(zhèn)定性分析
        手機(jī)界面中圖形符號(hào)的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        Linux線程實(shí)現(xiàn)技術(shù)研究
        丝袜美腿一区二区国产| 国产精品久久这里只有精品| 亚洲视频精品一区二区三区| 国产自拍在线观看视频| 色费女人18毛片a级毛片视频| 亚洲欧美日韩综合久久久| 亚洲中文字幕乱码免费| 高清不卡av在线播放| 国产欧美日韩中文久久| 无码综合天天久久综合网| 视频国产精品| 亚洲天堂av在线一区| 亚洲精品久久国产精品| 国产精品老熟女露脸视频 | 国产精品久久久久影视不卡| 日本一区二区午夜视频| 在线视频观看国产色网| 日本牲交大片免费观看| 97人妻视频妓女网| 国产成人美涵人妖视频在线观看| 最新国产精品拍自在线观看| 青青草原综合久久大伊人| 日本女优中文字幕看片| av免费在线播放观看| 无码人妻丰满熟妇区bbbbxxxx | 国产色婷亚洲99精品av网站| 中文字幕 亚洲精品 第1页| 国产男女猛烈视频在线观看| 国产自产av一区二区三区性色| 国内精品毛片av在线播放| 在线播放免费人成毛片乱码| 久久国产精品无码一区二区三区| 亚洲精品国产精品av| 一区二区三区人妻av| 最近中文字幕视频完整版在线看| 一区二区免费电影| 熟女少妇精品一区二区三区| 亚洲精品乱码久久久久久中文字幕 | 国产国拍亚洲精品福利| 国产精品视频白浆免费视频| 人人妻人人狠人人爽|