• es6- ArrayBuffer


    ArrayBuffer对象、TypedArray视图和DataView视图是 JavaScript 操作二进制数据的一个接口。

    简单说:

    ArrayBuffer对象代表原始的二进制数据,

    TypedArray 视图用来读写简单类型的二进制数据,(本机子节序 视频,音频操作)

    DataView视图用来读写复杂类型的二进制数据。(传输中的网络设备 复杂数据。)

    3.复合视图:

    由于视图的构造函数可以指定起始位置和长度,所以在同一段内存之中,可以依次存放不同类型的数据,这叫做“复合视图”。

    5. 二进制的应用

    ajax, canvas, websoket, fetch api,其中返回的是二进制数据, file api: 处理文件和 图片。

    6. shareArrayBuffer

    ES2017 引入SharedArrayBuffer,允许 Worker 线程与主线程共享同一块内存。SharedArrayBuffer的 API 与ArrayBuffer一模一样,唯一的区别是后者无法共享。

    7. Atomics对象, :  应用于worker共同操作同一内存地址,引起的 冲突等问题。

    多线程共享内存,最大的问题就是如何防止两个线程同时修改某个地址

    SharedArrayBuffer API 提供Atomics对象,保证所有共享内存的操作都是“原子性”的,并且可以在所有线程内同步。

    ( 1 )方法:Atomics.store(), .load()   : 避免了 系统为了优化,而将指令分散执行。

    store()方法用来向共享内存写入数据,

    load()方法用来从共享内存读出数据。比起直接的读写操作,它们的好处是保证了读写操作的原子性。

    (2)Atomics.wait(),Atomics.wake()

    这两个方法相当于锁内存,即在一个线程进行操作时,让其他线程休眠(建立锁),等到操作结束,再唤醒那些休眠的线程(解除锁)。

    (3)运算方法

    共享内存上面的某些运算是不能被打断的,即不能在运算过程中,让其他线程改写内存上面的值。Atomics 对象提供了一些运算方法,防止数据被改写。

    Atomics.sub(sharedArray, index, value)
    Atomics.add(sharedArray, index, value)
    Atomics.and(sharedArray, index, value)
    Atomics.or(sharedArray, index, value)
    Atomics.xor(sharedArray, index, value)
  • 相关阅读:
    chrome——关于chrome浏览器的奇葩问题
    vscode——配置终端集成bash和cmd
    AndroidStudio——Android SDK
    Navicat——如何导出所有的查询数据
    mpvue——实现点击数组内的某一元素进行置顶(排序第一)操作
    TP5.x——开启跨域访问
    TP5.x——聊天列表查询
    MarkDowm——语法篇
    写一个整数四则运算的解析器——语法分析部分
    写一个整数四则运算的解析器——词法分析部分
  • 原文地址:https://www.cnblogs.com/rainbow661314/p/7831259.html
Copyright © 2020-2023  润新知