999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多線程技術在云存儲視圖庫中的應用

2015-03-19 03:00:37尹莉莉
新媒體研究 2015年15期
關鍵詞:界面程序資源

尹莉莉

安徽四創電子股份有限公司,安徽合肥 230088

1 多線程的同步技術

開發人員在進行多線程編程時,為了使得各個線程能夠協同工作,必須要用到線程同步技術。下面將針對臨界區、事件及互斥對象這幾種windows線程的同步技術進行介紹。

1.1 臨界區對象

臨界區其實就是一段代碼,它的作用就是控制共享資源不被同時訪問,比如一個線程進入臨界區訪問共享資源后,其他想訪問該共享資源的線程將被拒絕訪問,處于掛起狀態,直到臨界區釋放后,其他線程才可以繼續搶占。利用臨界區對象控制線程同步的方法如下。

1)定義臨界區對象,該對象是全局變量。

CRITICAL_SECTION g_s;

2)初始化臨界區對象。

InitializeCriticalSection(&g_s);

3)進入臨界區。

EnterCriticalSection(&g_s);

4)釋放臨界區。

LeaveCriticalSection(&g_s);

1.2 事件對象

事件對象是一種抽象的對象,有受信和未受信兩種狀態,一般和WaitForSingleObject函數一起使用,該函數根據事件的受信狀態來判斷是否讓線程訪問該共享數據。利用事件對象來保持線程同步的方法如下。

1)創建事件內核對象并保存事件對象的句柄。

HANDLE g_hEvent;//全局變量。

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

createEvent函數可根據參數傳入的不同,來決定是否需要手動重置事件對象,同時也可以決定事件創建的初始狀態,即受信還是未受信。

2)更改事件對象的狀態。

SetEvent(g_hEvent);//設置事件狀態為受信狀態

ReleaseEvent(g_Event);//設置事件狀態為無信號狀態

3)使用WaitForSingleObject函數來控制線程對共享資源的訪問。

WaitForSingleObject(g_hEvent,INFINITE);

當事件對象是受信狀態時,則該線程可以訪問共享資源。

1.3 互斥內核對象

互斥對象也是一種內核對象,其與前面兩種保持同步的方法類似,利用該技術進行線程同步的方法如下。

1.3.1 創建互斥對象并保存對象句柄

HANDLE g_hMutex;//全局變量

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

1.3.2 在線程函數中使用WaitForSingleObject

WaitForSingleObject(g_hEvent,INFINITE);

1.3.3 釋放互斥對象

ReleaseMutex(g_hMutex);

2 多線程的優缺點

任何東西都有它的兩面性,同樣多線程也是一把雙刃劍,有它的優點也有它的缺點。

首先,多線程的優點如下。

1)提高界面程序響應速度。

當一個程序既要執行耗時的任務,又要更新窗口及接受相關界面操作時,如云存儲視圖庫的客戶端界面程序,如果該程序是單線程程序,則會導致界面的卡死,從用戶的角度來說,這個應用程序就像處于無響應狀態一樣。如果程序是多線程程序,可以把耗時任務,比如視頻的點播,文件的上傳下載等傳遞給后臺線程,當后臺線程在執行這些功能的時候,主線程就可以及時的處理用戶對界面的操作請求,從用戶的體驗感上來講,程序的響應速度就比單線程要快的多。

2)資源利用率高。

因為電腦的工作原理是輪轉時間片進行操作,而操作系統中分配時間片的操作是以線程為準的,對比實現同樣功能的多線程程序和單線程程序,多線程程序被分配的時間片就比單線程程序多了,從而cpu在它上面花費的時間就多了,這就充分的利用了cpu資源。比如上傳下載文件,當用戶上傳第一個文件時,cpu會等待第一個文件上傳完成,如果接下來繼續上傳其他文件,cpu在上傳文件的同時就可以對已上傳完成的文件進行下載了,因為在執行文件上傳時,cpu還有很多空閑的時間,可以給下載線程分配一定的時間片來執行下載,從而提高了cpu資源的利用率。

其次,多線程的缺點如下。

1)設計復雜。

有一些多線程應用程序比單線程的應用程序要簡單,但是一般情況下多線程的設計還是更復雜一點,尤其當多個線程共享進程數據的時候,需要用到同步技術,處理不當就有可能造成線程的死鎖。

2)頻繁切換上下文的開銷。

Cpu是通過分配時間片來控制線程的交替執行的,當一個線程的時間片被用完時,cpu就要準備從該線程切換到下一個被分配到時間片的線程,此時就需要cpu記錄當前線程的相關信息,如線程的相關數據,程序的地址等,這些操作完成后,cpu才可以載入另一個線程的相關數據開始執行。由此可知,如果程序是多線程程序,由于線程數量較多,系統將會花費大量的時間來處理線程的頻繁切換,這就可能降低程序的執行效率。

3)資源消耗的增加。

多線程程序在充分利用cpu資源的情況下,也會加大對資源的消耗量,因為每個線程都要有自己的一個堆棧,這就加大了對內存的使用,同時程序還需要一些資源來管理線程,這些都導致了資源消耗的增加。

3 結論

綜上可知,多線程的使用有利有弊,在軟件開發中,到底需不需要用到多線程編程需要考慮很多因素,也需要結合程序功能的實際情況。一般情況下,多線程技術在項目開發中還是得到了廣泛應用,因為在大多數項目開發中,多線程的優勢還是明顯大于劣勢的。

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

[2]章秦.Win32多線程同步技術淺析[J].電子設計工程,2011.

猜你喜歡
界面程序資源
基礎教育資源展示
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
一樣的資源,不一樣的收獲
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
資源回收
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
“程序猿”的生活什么樣
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
人機交互界面發展趨勢研究
主站蜘蛛池模板: 尤物精品视频一区二区三区| 高清色本在线www| 久久综合色88| 亚洲手机在线| 国产福利免费视频| 日本亚洲成高清一区二区三区| 九色在线观看视频| 欧美精品一二三区| 国产资源站| 日本在线免费网站| 最新国产成人剧情在线播放| a毛片在线| 四虎国产在线观看| 伊人色综合久久天天| 九九九九热精品视频| 亚洲a免费| 欧美午夜理伦三级在线观看| 色婷婷视频在线| 亚洲专区一区二区在线观看| 精品视频91| 亚洲国产成人久久精品软件| 在线观看国产网址你懂的| 人妻中文久热无码丝袜| 永久毛片在线播| 女人18毛片一级毛片在线 | 日本在线视频免费| 日韩大片免费观看视频播放| 91精品小视频| 亚洲天堂2014| 亚洲日韩AV无码一区二区三区人| 性色生活片在线观看| 伊人色天堂| 欧美午夜网| 精品伊人久久久香线蕉| 欧美乱妇高清无乱码免费| 亚洲日韩国产精品综合在线观看| 国产在线一区二区视频| 欧美一区二区三区欧美日韩亚洲| 国产00高中生在线播放| 夜夜操天天摸| 视频一本大道香蕉久在线播放 | 国产99久久亚洲综合精品西瓜tv| 国产va在线观看免费| 久久久久国产精品熟女影院| 亚洲日韩高清无码| 国产国产人成免费视频77777| 久久亚洲国产一区二区| 久久国产精品无码hdav| vvvv98国产成人综合青青| 欧美激情视频一区| 精品无码日韩国产不卡av | 91在线精品麻豆欧美在线| 免费国产高清精品一区在线| 国产成人a毛片在线| 久久这里只有精品国产99| 国产成人艳妇AA视频在线| 亚洲欧美成aⅴ人在线观看 | 久久人午夜亚洲精品无码区| 亚洲日韩精品伊甸| 国产精品九九视频| 无码'专区第一页| 青草视频免费在线观看| 91精品啪在线观看国产91九色| 国产成人永久免费视频| hezyo加勒比一区二区三区| 一本二本三本不卡无码| 成人福利在线视频| 无码 在线 在线| 久久久受www免费人成| 国产乱人视频免费观看| 国产欧美日韩资源在线观看| 国产精品自在在线午夜| 一级毛片免费的| 成人无码区免费视频网站蜜臀| 亚洲成人一区二区三区| 精品超清无码视频在线观看| 亚洲日本一本dvd高清| 成人欧美在线观看| 男女男免费视频网站国产| 国产又色又爽又黄| 国产玖玖视频| 欧美日韩一区二区在线免费观看|