Atomics
Atomics เป็นออบเจ็กต์ใน JavaScript ที่ให้ atomic operations เป็น static methods คล้ายกับเมธอดของ Math ใช้ร่วมกับ SharedArrayBuffer
Atomics ไม่ใช่ constructor ไม่สามารถใช้กับ new operator หรือเรียกเป็นฟังก์ชันได้
Atomic Operations
Atomic operations เป็น operations ที่ ไม่ถูกขัดจังหวะ (uninterruptible) เมื่อ memory ถูกแชร์ หลาย thread อาจ read/write ข้อมูลเดียวกัน Atomic operations รับประกันว่าเขียนและอ่านค่าที่คาดหวังได้ถูกต้อง จะไม่เริ่ม operation ใหม่จนกว่า operation ปัจจุบันจะเสร็จ
Atomics.add()
Atomics.add() เพิ่มค่าที่กำหนดที่ตำแหน่งที่กำหนดในอาร์เรย์ และคืนค่าเก่าที่ตำแหน่งนั้น ไม่มี interruption อนุญาต จึงไม่มี write อื่นแทรกได้จนคืนค่าแล้ว
รูปแบบ
Atomics.add(typedArray, index, value)
พารามิเตอร์
- typedArray - shared integer array ที่จะแก้ไข
- index - ตำแหน่งในอาร์เรย์ที่จะเพิ่มค่า
- value - จำนวนที่จะเพิ่ม
ค่าที่คืน
คืนค่าเก่าที่ตำแหน่งนั้น (typedArray[index])
ตัวอย่าง
<html> <body> <script type="text/javascript">
// สร้าง SharedArrayBuffer
var buffer = new SharedArrayBuffer(25);
var arr = new Uint8Array(buffer);
// กำหนดค่าที่ index 0 เป็น 6
arr[0] = 6;
// แสดงค่าที่คืนจาก Atomics.add()
document.write(Atomics.add(arr, 0, 2));
document.write("<br>");
// แสดงค่าที่อัปเดตแล้ว
document.write(Atomics.load(arr, 0));
</script> </body> </html>
ผลลัพธ์
6 8