• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      多線程技術(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ù)研究
      阳东县| 扶余县| 繁峙县| 大邑县| 达日县| 山东| 阳曲县| 成武县| 绥棱县| 安徽省| 漳浦县| 丽水市| 农安县| 郸城县| 宝鸡市| 敦煌市| 汉阴县| 桑日县| 文登市| 海口市| 留坝县| 凭祥市| 红河县| 竹溪县| 临澧县| 曲靖市| 沙洋县| 鹤壁市| 南安市| 尼勒克县| 兴义市| 安阳市| 温泉县| 蓝山县| 织金县| 洮南市| 永春县| 洪江市| 沛县| 湖北省| 平和县|