Atomics.isLockFree() operation returns true if the given size is one of the BYTES_PER_ELEMENT properties of integer TypedArray types else Atomics.isLockFree() operation returns false. A lock-free element can be manipulated without needing a lock and the user does not require to provide its own locking mechanism.
What is BYTES_PER_ELEMENT property of integer TypedArray ?
- The TypedArray.BYTES_PER_ELEMENT property represents the size in bytes of each element in a typed array.
- Since TypedArray objects differ from each other in the number of bytes per element and in the way the bytes are interpreted.
- The BYTES_PER_ELEMENT constant contains the number of bytes each element in the given TypedArray has.
Applications:
- Atomics.isLockFree() are used to check whether an operation is lock free or not.
- Can be used for the validation of the BYTES_PER_ELEMENT property of integer TypedArray
Syntax:
Atomics.isLockFree(size)
Parameters Used:
- size : It is the size in bytes to check
Return Value: Atomics.isLockFree() returns either Boolean true indicating the operation is lock free or it returns false.
Examples of the above function are provided below.
Input : Atomics.isLockFree(5) Output : false
Explanation: In this example, “5” is sent as a parameter to the Atomics.isLockFree() method and it returns false because “5” is not one of the BYTES_PER_ELEMENT values.
Input : Atomics.isLockFree(6) Output : false
Explanation: In this example, “6” is sent as a parameter to the Atomics.isLockFree() method and it returns false because “6” is not one of the BYTES_PER_ELEMENT values.
Input : Atomics.isLockFree(2) Output : true
Explanation: In this example, “2” is sent as a parameter to the Atomics.isLockFree() method and it returns true because “2” is one of the BYTES_PER_ELEMENT values.
Input : Atomics.isLockFree(4) Output : true
Explanation: In this example, “4” is sent as a parameter to the Atomics.isLockFree() method and it returns true because “4” is one of the BYTES_PER_ELEMENT values.
Examples of the above function are provided below.
Example 1:
javascript
// Displaying the return value of the // Atomics.isLockFree() method console.log(Atomics.isLockFree(5)); // Atomics.isLockFree() will return false since // 5 is not one of the BYTES_PER_ELEMENT values |
Output :
false
Example 2:
javascript
// Displaying the return value of // the Atomics.isLockFree() method console.log(Atomics.isLockFree(6)); // Atomics.isLockFree() will return false since 6 // is not one of the BYTES_PER_ELEMENT values |
Output :
false
Example 3:
javascript
// Displaying the return value // of the Atomics.isLockFree() method console.log(Atomics.isLockFree(2)); // Atomics.isLockFree() will return true since // 2 is one of the BYTES_PER_ELEMENT values |
Output :
true
Example 4:
javascript
// Displaying the return value of the // Atomics.isLockFree() method console.log(Atomics.isLockFree(4)); // Atomics.isLockFree() will return true since // 4 is one of the BYTES_PER_ELEMENT values |
OUTPUT :
true
Application: Whenever we want to check whether an operation is lock-free or not or we want to validate the BYTES_PER_ELEMENT property of integer TypedArray, we use the Atomics.isLockFree() operation in JavaScript.
Example:
javascript
// Displaying the return value of // the Atomics.isLockFree() method console.log(Atomics.isLockFree(8)); // Atomics.isLockFree() will return true since 8 // is one of the BYTES_PER_ELEMENT(Float64Array) values |
Output :
true
Exceptions :
- If the typedArray is not one of the allowed integer types then the Atomics.isLockFree( ) operation throws a TypeError.
- If the typedArray is not a shared typed array then the Atomics.isLockFree( ) operation throws a TypeError.
Supported Browser:
- Google Chrome
- Microsoft Edge
- Firefox
- Opera
- Safari
We have a complete list of Javascript Atomic methods, to check those please go through this JavaScript Atomics Complete Reference article.
We have a Cheat Sheet on Javascript where we covered all the important topics of Javascript to check those please go through Javascript Cheat Sheet-A Basic guide to JavaScript.