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)

最新文章

  1. 如何从线程返回信息——轮询、回调、Callable
  2. kd tree学习笔记 (最近邻域查询)
  3. 关于opacity透明度子元素继承现象的若干研究以及hack方法
  4. glOrtho、glFrustum && glPerspective
  5. 预编译头文件 StdAfx.h
  6. Java传参那些事!
  7. 【UML】——为什么要使用UML
  8. centos7.0安装docker报错
  9. servlet三种实现方式之三通过继承HttpServlet开发servlet
  10. Unity3D消息:消息传递函数
  11. ActionBar 值 addTab 的小提示
  12. 201521123087 《Java程序设计》第6周学习总结
  13. 概率分布之间的距离度量以及python实现(三)
  14. GreenDao开源ORM框架浅析
  15. 机器学习简要笔记(五)——Logistic Regression(逻辑回归)
  16. ESB(Enterprise Service Bus)企业服务总线介绍
  17. public,protected,private
  18. vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体
  19. mysql 幻象读
  20. 【转】电脑运行命令CMD集锦

热门文章

  1. 【BZOJ 4035】 4035: [HAOI2015]数组游戏 (博弈)
  2. 【BZOJ 2437】 2437: [Noi2011]兔兔与蛋蛋 (博弈+二分图匹配**)
  3. 【BZOJ 4170】 4170: 极光 (CDQ分治)
  4. HDU 6118 度度熊的交易计划(费用流)
  5. hdu 4352 数位dp+nlogn的LIS
  6. 启动Tensorboard时发生错误:class BeholderHook(tf.estimator.SessionRunHook): AttributeError: module 'tensorflow.python.estimator.estimator_lib' has no attribute 'SessionRunHook'
  7. 模拟算法+栈 HDU 1022
  8. VK Cup 2016 - Qualification Round 1 (Russian-Speaking Only, for VK Cup teams) C. Promocodes with Mistakes 水题
  9. WebDriver工作原理
  10. 详解Java中的clone方法 -- 原型模式 及源码