SharedArrayBuffer
Constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.
Usage
var SharedArrayBuffer = require( '@stdlib/array/shared-buffer' );
SharedArrayBuffer( size )
Returns a SharedArrayBuffer having a specified number of bytes.
try { var buf = new SharedArrayBuffer( 5 ); // returns <SharedArrayBuffer> } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
Properties
SharedArrayBuffer.length
Number of input arguments the constructor accepts.
var len = SharedArrayBuffer.length; // returns 1
SharedArrayBuffer.prototype.byteLength
Read-only property which returns the length (in bytes) of the SharedArrayBuffer.
try { var buf = new SharedArrayBuffer( 5 ); var byteLength = buf.byteLength; // returns 5 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
Methods
SharedArrayBuffer.prototype.slice( [start[, end]] )
Copies the bytes of a SharedArrayBuffer to a new SharedArrayBuffer.
try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice(); // returns <SharedArrayBuffer> var bool = ( b2 === b1 ); // returns false } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
By default, the method copies from the beginning of the SharedArrayBuffer. To begin copying from a different byte index, provide a start argument, specifying the starting byte index (inclusive).
try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( 2 ); var nbytes = b2.byteLength; // returns 8 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
If start < 0, the index is relative to the end of the SharedArrayBuffer.
try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( -2 ); var nbytes = b2.byteLength; // returns 2 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
By default, the method copies to the end of the SharedArrayBuffer. To copy until a particular byte index, provide an end index, specifying the ending byte index (exclusive).
try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( 2, 6 ); var nbytes = b2.byteLength; // returns 4 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
If end < 0, the index is relative to the end of the SharedArrayBuffer.
try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( 2, -2 ); var nbytes = b2.byteLength; // returns 6 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); }
Examples
var randu = require( '@stdlib/random/base/randu' ); var Float64Array = require( '@stdlib/array/float64' ); var Uint8Array = require( '@stdlib/array/uint8' ); var toBinaryString = require( '@stdlib/number/uint8/base/to-binary-string' ); var SharedArrayBuffer = require( '@stdlib/array/shared-buffer' ); function main() { var bytes; var buf; var arr; var i; // Create a new SharedArrayBuffer: buf = new SharedArrayBuffer( 64 ); // Create a Float64 array buffer view: arr = new Float64Array( buf.byteLength/8 ); for ( i = 0; i < arr.length; i++ ) { arr[ i ] = randu() * 100.0; } // Create a "bytes" view of the array buffer: bytes = new Uint8Array( arr.buffer ); // Print the bytes: for ( i = 0; i < bytes.length; i++ ) { console.log( 'byte %d: %s', i, toBinaryString( bytes[ i ] ) ); } } try { main(); } catch ( err ) { console.error( 'Environment does not provide SharedArrayBuffer support.' ); }
See Also
@stdlib/buffer/ctor: Buffer.@stdlib/array/buffer: ArrayBuffer.@stdlib/array/float32: Float32Array.@stdlib/array/float64: Float64Array.@stdlib/array/int16: Int16Array.@stdlib/array/int32: Int32Array.@stdlib/array/int8: Int8Array.@stdlib/array/uint16: Uint16Array.@stdlib/array/uint32: Uint32Array.@stdlib/array/uint8: Uint8Array.@stdlib/array/uint8c: Uint8ClampedArray.