zoukankan      html  css  js  c++  java
  • Atomics

    Atomics

    Atomics 对象提供了一组静态方法对 SharedArrayBuffer 和 ArrayBuffer 对象进行原子操作。

    code

    import { isMainThread, parentPort, Worker } from 'worker_threads';
    
    function main() {
        var w: Worker = new Worker(__filename);
        w.once('online', () => {
            console.log('子线程上线');
            var sab = new SharedArrayBuffer(4);
            setTimeout(() => {
                w.postMessage(sab);
                setTimeout(() => {
                    console.log('尝试唤醒...');
                    var modify = new Int32Array(sab);
                    Atomics.notify(modify, 0);
                }, 6000);
            }, 2000);
        });
    }
    
    if (isMainThread) {
        main();
    } else {
        task();
    }
    
    function task() {
        console.log('我是子进程');
        var flag = false;
        parentPort.once('message', sab => {
            console.log('等待唤醒,或20秒后超时');
            let result = Atomics.wait(new Int32Array(sab), 0, 0, 20000);
            console.log('唤醒状态:', result);
            flag = true;
        });
        setInterval(() => {
            if (!flag) {
                console.log('...', new Date);
            }
        }, 100);
    }
    
  • 相关阅读:
    C语言指向指针的指针
    C语言注意事项
    C语言指针
    C语言字符串
    C语言数组
    C语言交换两个数的值
    C语言位运算符
    C语言各种进制输出
    C语言中各种进制的表示
    C 语言sizeof运算符
  • 原文地址:https://www.cnblogs.com/develon/p/15714637.html
Copyright © 2011-2022 走看看