aardio 文档

aardio 范例: 线程通道

//线程通道
import console; 
import thread.channel;

//创建通道
var chan = thread.channel(10);

//创建新的线程
thread.invoke( 
    function(chan){  

        //发送值到通道,如果通道缓存队列满了就等待
        chan <<= "这是字符串1";
        chan <<= "这是字符串2";
        chan <<= "这是字符串3";
        chan <<= "这是字符串4";

    },chan 
)

//如果通道非空(或仍有其他线程占用该通道)则循环读取
while( ! chan.empty() ){
    /*
    注意:即使通道的缓存值队列空了没有数据,
    如果仍有其他引用该通道的线程在工作中, chan.empty() 仍然会返回 false 。
    仅获取通道中值队列长度可改用 chan.len() 函数。
    */
    var v;

    //自通道读取值,没有值就等待
    v <<= chan;

    console.log(v); 
}

//也可以这样写:循环读取通道缓存队列的值,直接通道为空
for v in chan.each(){
    console.log(v);
}

console.pause(true);
Markdown 格式