多线程 webworker

作者: 六月太阳花 | 来源:发表于2017-01-02 21:15 被阅读0次

多线程——webWorker
1、单线程与多线程区别:
单线程:前一个操作没做完,后一个没办法开始
多线程:可以同时进行多个操作
2、多线程:
好处:充分利用cpu资源
1.主线程:加载页面,渲染,css渲染,jsDOM树生成
2.由webWorker创建出,进行一些计算
3.子线程里面不能操作 DOM和BOM
4.子线程里面不能再去创建子线程
5.不能跨域
6.主线程和子线程之间数据不是共享,每次都是复制一份数据

主线程文件eg:

<script>
function fn(n){
    if(n==1 || n==2){
        return 1;
    }else{
        return fn(n-1)+fn(n-2);
    }
}
window.onload=function (){
    var oBtn1=document.getElementById('btn1');
    var oBtn2=document.getElementById('btn2');
    var oBtn3=document.getElementById('btn3'); 
    oBtn1.onclick=function (){
        alert(fn(48));
    };
    
    var oW=new Worker('fibo.js');//创建子进程
    oBtn2.onclick=function (){
        oW.postMessage(48);  //向子进程传输数据
        oW.onmessage=function (ev){//接收子进程传来的数据
            alert(ev.data);
        };
    };
    
    oBtn3.onclick=function (){
        oW.terminate();//结束子线程
    };
};
</script>
</head>

<body>
    <input type="button" value="点击测试" />
    <input type="button" value="主线程测试" id="btn1" />
    <input type="button" value="子线程测试" id="btn2" />
    <input type="button" value="结束子线程" id="btn3" />
</body>

子进程文件eg:

function fn(n){
    if(n==1 || n==2){
        return 1;
    }else{
        return fn(n-1)+fn(n-2);
    }
}
this.onmessage=function (ev){//子进程接收父进程的数据
    this.postMessage(fn(ev.data));//子进程向父进程传输数据
};
























相关文章

网友评论

    本文标题:多线程 webworker

    本文链接:https://www.haomeiwen.com/subject/ugxgvttx.html