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

        ?

        HTM L5 Web WOrker技術(shù)及應(yīng)用研究

        2016-03-04 00:10:14榮艷冬
        無線互聯(lián)科技 2015年11期
        關(guān)鍵詞:多線程

        榮艷冬

        摘要:文章主要討論網(wǎng)頁前端多線程技術(shù),首先分析了傳統(tǒng)多線程技術(shù)原理和應(yīng)用場景,然后分析了HTML5規(guī)范中WebWorker的技術(shù)原理、產(chǎn)生的必要性和具體應(yīng)用場景,通過對比分析得出了以下結(jié)論:網(wǎng)頁前端的工作線程和傳統(tǒng)的多線程本質(zhì)上有很大差別,它更適合由于服務(wù)器或者客戶端長時間計(jì)算導(dǎo)致網(wǎng)頁前端處于阻塞狀態(tài)的工作場景。

        關(guān)鍵詞:HTML5;Web Worker;多線程;工作線程

        1引言

        多線程技術(shù)已經(jīng)被普遍地應(yīng)用到軟件開發(fā)之中,它是非常成熟的技術(shù)。多線程技術(shù)是指在一個進(jìn)程中包含多個可并行執(zhí)行的控制流,這些控制流切換時不必通過進(jìn)程調(diào)度,通信時可以借助于共享的內(nèi)存區(qū)。多線程的優(yōu)勢非常明顯,它能高效的利用系統(tǒng)資源,提高用戶體驗(yàn),縮短完成任務(wù)的時間。當(dāng)然其缺點(diǎn)也非常明顯,例如:增加了程序設(shè)計(jì)和實(shí)現(xiàn)的復(fù)雜度、需要更多的計(jì)算機(jī)資源等。

        HTML5是由W3C組織2014年完成的新網(wǎng)頁規(guī)范,它融入了非常多的新技術(shù),其中Web Worker是HTML5提出的工作線程技術(shù),工作線程允許web頁面中進(jìn)行多線程編程。本文主要討論工作線程與傳統(tǒng)多線程的差別、工作線程的技術(shù)原理、必要性和應(yīng)用場景。

        2傳統(tǒng)多線程技術(shù)

        2.1技術(shù)概述

        傳統(tǒng)多線程技術(shù)主要應(yīng)用到軟件編程中,線程相當(dāng)于一個小的進(jìn)程,由操作系統(tǒng)進(jìn)行調(diào)度,多個線程可以由一個進(jìn)程進(jìn)行管理,當(dāng)前幾乎所有的高級語言都提供了多線程支持,例如:Java和.net等程序設(shè)計(jì)語言提供了專門的多線程接口,用戶可以更加方便的進(jìn)行多線程編程。

        2.2技術(shù)應(yīng)用場景

        多線程技術(shù)應(yīng)用已經(jīng)非常成熟,以下是兩個比較典型的應(yīng)用場景:

        (1)軟件多任務(wù)執(zhí)行,用戶可以在一個軟件上啟動多個任務(wù),這能夠提高了軟件的利用率;另外,軟件在執(zhí)行安裝、計(jì)算等操作時也可以同時啟動多任務(wù),這可以有效地利用CPU等計(jì)算機(jī)資源,從而提高工作效率。

        (2)網(wǎng)絡(luò)編程,在網(wǎng)絡(luò)編程中服務(wù)器端需要使用多線程技術(shù),一個新的用戶和服務(wù)器進(jìn)行連接,需要啟動一個新的線程,這可以讓每個用戶和服務(wù)器的交互是獨(dú)立的,從而保證用戶能夠單獨(dú)完成業(yè)務(wù)邏輯和數(shù)據(jù)通信,服務(wù)器資源充分被利用。

        3 HTML5 Web Worker技術(shù)

        在HTML5中,多線程技術(shù)被稱為工作線程(Web Worker),HTML5規(guī)范出Web Worker的3大主要特征:能夠長時間運(yùn)行(響應(yīng)),理想的啟動性能和內(nèi)存消耗。

        3.1 Web Worker技術(shù)原理

        Web Worker技術(shù)本質(zhì)是Web程序中可以并發(fā)執(zhí)行多個Javascript腳本,每一個被執(zhí)行的腳本稱為一個線程,彼此相互獨(dú)立,統(tǒng)一由瀏覽器的Javascript引擎進(jìn)行管理,它和傳統(tǒng)的線程在線程管理、應(yīng)用場景等諸多方面還是有很大差別的,其最主要的特點(diǎn)是在頁面端實(shí)現(xiàn),這是網(wǎng)頁技術(shù)的一個創(chuàng)新內(nèi)容。

        HTML5中的Web Worker可以分為2種不同線程類型,一個是專用線程(Dedicated Worker),一個是共享線程(Shared Worker)。專用線程是指只能在單一客戶端上實(shí)現(xiàn)多線程,與其他客戶端不發(fā)生交互;共享線程更適合多個瀏覽器窗口、iframe或者Worker并發(fā)訪問,適應(yīng)多個客戶端之間進(jìn)行數(shù)據(jù)的交互和控制,它允許同域中的多個應(yīng)用程序使用同一個提供公共服務(wù)的共享線程。共享線程的通信和專用線程稍有不同,需要通過port屬性進(jìn)行通信。以下是專用線程的創(chuàng)建、通信和終止操作:

        (1)線程的創(chuàng)建,HTML5通過“new Worker(url)”語句建立一個新的工作線程,參數(shù)“url”是Javascript文件資源,它不可以跨域,這個文件中的Javascript代碼在一個單獨(dú)的工作線程中運(yùn)行,工作線程如果需要加載其他的Javascript文件,可以使用“importScript”函數(shù)。

        (2)線程的通信,頁面主程序通過onMessage事件接收專用線程傳遞的數(shù)據(jù),使用postMessage事件給頁面主程序發(fā)送數(shù)據(jù)。

        (3)線程的終止,通過調(diào)用“terminate()”方法立刻終止當(dāng)前線程,線程沒有完成的操作不會被繼續(xù)執(zhí)行。

        3.2工作線程的必要性

        Javascript語言是單線程的,所以頁面端程序設(shè)計(jì)不能是并行的,這給許多頁面程序設(shè)計(jì)帶來了技術(shù)瓶頸,頁面端如果一個Javascript程序沒有完成,其他的Javascript將被阻塞,如果用戶通過Javascript語言向服務(wù)器端發(fā)送請求,而服務(wù)器端計(jì)算時間較長,不能及時給客戶端響應(yīng),頁面將處于無響應(yīng)狀態(tài)。雖然可以通過setInterval和setTimeout函數(shù)模擬多線程工作,但是其本質(zhì)是單線程,不能有效的利用客戶端資源,無法徹底的解決多線程問題。

        Web Worker技術(shù)從本質(zhì)上彌補(bǔ)了Javascript的單線程缺陷,無論是對于服務(wù)器端計(jì)算時間較長的Javaseript請求,還是前端Javascript語言長時間的運(yùn)算,都可以單獨(dú)創(chuàng)建工作線程,不影響其他線程工作。

        3.3應(yīng)用場景

        (1)服務(wù)器端長響應(yīng),服務(wù)器端有可能進(jìn)行長時間的計(jì)算,不能夠給客戶端及時響應(yīng),客戶端會處于阻塞狀態(tài),解決這種問題通常有2種方案:一是優(yōu)化服務(wù)器端,縮短計(jì)算時間;二是客戶端采用輪詢獲得服務(wù)器端計(jì)算結(jié)果。顯然第1種方案沒有徹底解決問題,第2種方案使程序設(shè)計(jì)更加復(fù)雜,更加浪費(fèi)服務(wù)器端資源。HTML5的工作線程適應(yīng)這種場景,對于服務(wù)器端長響應(yīng)的請求可以使用Ajax進(jìn)行實(shí)現(xiàn),為發(fā)送請求的Javascript代碼單獨(dú)建立一個工作線程,這樣,服務(wù)器端長響應(yīng)的請求和頁面其他內(nèi)容處于兩個線程,阻塞只發(fā)生在長響應(yīng)的線程中,頁面其他工作不受影響。

        (2)客戶端計(jì)算,通常Web編程中客戶端的長時間計(jì)算是不被允許的,因?yàn)殚L時間的計(jì)算會阻塞頁面,降低用戶瀏覽網(wǎng)頁的體驗(yàn)度。在實(shí)際工作過程中客戶端的復(fù)雜計(jì)算是很普遍的,例如3D網(wǎng)頁技術(shù)、在線游戲技術(shù)等都需要客戶端進(jìn)行長時間的計(jì)算。工作線程適合這個場景,長時間的客戶端計(jì)算可以由一個單獨(dú)的工作線程進(jìn)行處理,不影響頁面的其他工作,用戶甚至可以設(shè)置加載動畫等待計(jì)算結(jié)果。

        4結(jié)語

        HTML5的工作線程在本質(zhì)上和傳統(tǒng)多線程是不同的,這也決定了他們適應(yīng)的場景有所不同。網(wǎng)頁前端多線程技術(shù)當(dāng)前并沒有被廣泛的應(yīng)用,Web Worker規(guī)范雖然已經(jīng)制定完成,但并沒有很多成熟的應(yīng)用。但是,它所提出的理念讓客戶端編程更加豐富,這也可以更加有效的利用客戶端資源,在提高工作效率的同時,也減輕了服務(wù)器端的壓力。

        猜你喜歡
        多線程
        Java并發(fā)工具包對并發(fā)編程的優(yōu)化
        基于多線程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
        網(wǎng)頁爬蟲技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線程的高速磁盤鏡像算法
        iOS并發(fā)程序設(shè)計(jì)中幾種方法的特點(diǎn)及使用技巧研究
        電站鍋爐煤粉參數(shù)遠(yuǎn)程監(jiān)控系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)
        亚洲午夜经典一区二区日韩| 韩国av一区二区三区不卡| 国产亚洲一区二区在线观看 | 国产乱子伦精品免费无码专区 | 亚洲av在线播放观看| 久久99国产精品久久99密桃| 免费av片在线观看网址| 无套内射无矿码免费看黄| 亚洲AV无码成人品爱| 日本熟妇免费一区二区三区| 国产亚洲精品美女久久久久| 国产精品自在线拍国产| 国产美女一级做a爱视频| 日韩精品自拍一区二区| 国产在线无码不卡影视影院| 国产一线二线三线女| 国产真实乱对白在线观看| 国产av精选一区二区| 挺进邻居丰满少妇的身体| 成年男女免费视频网站| 午夜视频福利一区二区三区 | 国精品无码一区二区三区在线| 国产农村三片免费网站| 国产午夜视频高清在线观看| 久久国产成人精品av| 亚洲有码转帖| 国产爆乳美女娇喘呻吟久久| 亚洲成人av在线蜜桃| 久久久久成人片免费观看蜜芽| 色综合久久中文综合久久激情| 97久久国产精品成人观看| 久久精品中文字幕| 国产suv精品一区二区69| 亚洲成人av一区二区麻豆蜜桃| 国产一区二区三区仙踪林 | 男女18视频免费网站| 中文字幕天天躁日日躁狠狠躁免费| 91情侣视频| 亚洲日产乱码在线中文字幕| 免费人妻无码不卡中文字幕系 | 亚洲日韩成人无码不卡网站|