Concurrent.Thread API中文文档
API原文(日文):http://jsthread.sourceforge.net/cgi-bin/wiki/wiki.cgi?page=API_Specification
Goal(目标)
//运行函数中的线程var ui_t = Concurrent.Thread.create(function(){ var i = 0; while ( 1 ) { document.body.innerHTML = "Now calculating..." + ['|', '/', '-', '\'][i]; i = (i+1) % 4; Concurrent.Thread.sleep(1000); }});
//時間がかかりそうな計算をする(別スレッド化された)関数var fibonacci = Concurrent.Thread.compile(function(x){ function fib ( n ) { return n <= 1 ? 1 : fib(n-2) + fib(n-1); } var arr = new Array(); for ( var i=0; i < x; i++ ) arr.push(fib(i)); return arr;});
//主线程.var main_t = Concurrent.Thread.create(function(){ var calc_t = fibonacci.async(null, [1000]); //从1000开始运行线程 var result = calc_t.join(); //等待运行完的结果 ui_t.kill(); //バーを回していたスレッドを停止 focument.body.innerHTML = "Now calculating...finised.<br>\n"; for ( var i=0; i < result.length; i++ ) { document.body.innerHTML += i + ": " + result[i] + "<br>\n"; }});
主要的目标是下面3点
* 提供对象的线程库
* 可以使用多线程化函数(包括JavaScript函数组)
* 解决了JavaScript通常的域,可以ajax输入多线程化代码的参数.
名前空間(命名空间)
本库使用「Concurrent」作为命名空间,「Thread」定义为构造器.本库的其他名称都在「Concurrent.Therad」下定义.
Concurrent.Thread 对象(object)
virtual-thread表示对象.包括生成线程的静态方法,操作线程的方法.
継承(继承)
* → Object
static方法
prepare( func )
返回函数的javascript的代码.
compile( func )
virtual-thread 执行func.返回func执行结果.和下面的代码相同.
eval(Concurrent.Thread.prepare(func))
create( func, arg1, arg2, ... )
新建一个 virtual-thread,执行这个func.arg1, arg2, ... 为传入func的参数.和下面的代码相同.
Concurrent.Thread.compile(func).async(null, [arg1, arg2, ...])
返回 Concurrent.Thread对象.
self( )
获取当前 Concurrent.Thread 对象.virtual-thread化的,native-thread(通常的script)执行是返回null.
sleep( t )
当前运行的 virtual-thread 暂停 t ms.使用 notify方法可以中断暂停.
stop( )
使当前运行的virtual-thread进入停止状态.使用 notify方法恢复运行.下面是基本的用法.
try { Concurrent.Thread.stop();}catch ( e ) { if ( e instanceOf Concurrent.Thread.KillException ) { throw e; } else if ( e instanceof SomeOtherException ) { do_something(); } . . .}
yield( )
非独占CPU.和下面相等.
Concurrent.Thread.sleep(0)
instance 接口方法
th.join( )
th线程执行完后,当前的virtual-thread 待机.thが実行した関数の戻り値を返す.下記の notify でキャンセルできる.後述の「例外の伝播」も参照.
戻り値としてスレッドthの上で実行された関数の戻り値を返す.
th.kill( s )
和下面的相同.
th.notify( new Concurrent.Thread.KillException(s) )
th.notify( e )
在线程th中抛出异常.解除th中sleep,stop,join的待机状态.
Concurrent.Thread.KillException オブジェクト
从线程外部强制结束线程.与通常的相同可以使用 catch来取消.
継承
* → Data.Error.Exception
* → Error
* → Object
instance属性
thread
例外の発生元である Concurrent.Thread オブジェクトへの参照を保持する.
Function 对象扩展
instance方法
f.async(this_val, args)
新建线程,调用函数f.this_val为this,args为参数数组.
返回一个Concurrent.Thread对象.
分享到:
相关推荐
js线程睡眠
用javascript 实现进度条加载大数据量的表格。在加载中不影响页面的操作。相当于多线程式的动态生成表格。
一个可以在JavaScript中应用多线程的库:Concurrent.Thread,如果你想更深入的了解,推荐您去看the tutorial。它提供有关Concurrent.Thread用法的更多内容,并列出了可供高级用户使用的文档,是最适合起步的材料。 ...
一个JavaScript多线程函数 一个JavaScript多线程函数 一个JavaScript多线程函数 一个JavaScript多线程函数
Javascript定时器 一 单线程
Microjob是Node.js线程的一个微小封装,旨在使用匿名函数执行繁重的CPU负载
JavaScript多线程的实现方法(gif).txt
介绍了一个可以在JavaScript中应用多线程的库:Concurrent.Thread,内有多线程库脚本,以及使用说明和实例,如果查看详情,可以查看我的博客https://blog.csdn.net/hsl_1990_08_15/article/details/84765772
一个轻量级的 javascript 线程实现 用法 可以使用传统的脚本标签将threads4js包含在页面中 < script src =" threads4js.js " > </ script > 或需要为CommonJS的风格模块,由预编译或不具有预编译在线...
这是一个跨多浏览器的js框架,用以把javascript模拟成多线程
# 多线程.js//线程暂停//线程停止//定义一个线程//线程开始执行//等待线程执行完闭。
js多线程脚本库,实现多线程 比如执行太慢,可以试用下这个,不错的
Concurrent.Thread.js 一个用来让javascript也进行多线程开发的包,感兴趣的快来下吧。
NULL 博文链接:https://baiyejianxin.iteye.com/blog/1295730
Hamsters.js, 100%个普通Javascript多线程&并行执行库 Hamsters.js作者:奥斯汀K 。 史密斯网站: Hamsters.io描述: 100%个普通Javascript多线程&并行执行库许可证: 艺术许可 2.0 环境支持所有主流浏览器 IE9 +现有网
一个JavaScript多线程函数库 使用说明
winform 多线程 js 相互调用
继上篇讨论了一些关于JavaScript线程的知识,我们不妨回过头再看看,是不是JavaScript就不能多线程呢?看下面一段很简单的代码(演示用,没考虑兼容问题):
一般就JS来说,它同时只能执行一个函数,一个一个按顺序去执行,本多线程库就解决了此问题,可以同时去执行多个JS函数。