SharedArrayBufferをメッセージとして送信する。worker.postMessage(sBuffer);これでWorkerにSharedArrayBufferを送信し、元のメインスレッド側でも引き続きSharedArrayBufferの値を操作することができます。SharedArrayBufferはスレッド間で共有されているので、お互いの操作が反映されあう状態になっています。APIこれでWorker間でSharedArrayBufferを共有することができました。大きな問題があります。これではスレッドセーフではないのです。スレッドセーフというのは、複数のスレッド(ここではWorker)がデータを同時に処理しても問題ない状態を表します。SharedArrayBufferでは複数のWorkerでデータが共有できるので、複数のWorkerが同時に処理すると、問題が発生することがあります。APIを使用すれば、SharedArrayBufferの操作中に他のWorkerが同時に同じ箇所を操作して処理が破綻することを防ぐことができます。APIを利用してスレッドセーフな操作を行う。0番目の値に、値10を足す。APIには、以下の操作があります。value)typedArrayのindex番目の値にvalueを足して、index番目にその結果を書き込みます。value)typedArrayのindex番目の値とvalueのANDをとって、index番目にその結果を書き込みます。replacement)typedArrayのindex番目の値とexpectedを比較し、等しければindex番目にreplacementを書き込みます。value)typedArrayのindex番目にvalueを書き込み、書き込む前の値を返します。index)typedArrayのindex番目の値を読み込み返します。value)typedArrayのindex番目の値とvalueのORをとり、index番目にその値を書き込みます。value)typedArrayのindex番目にvalueを書き込みます。value)typedArrayのindex番目の値からvalueを引き、index番目にその結果を書き込みます。value)typedArrayのindex番目の値とvalueのXORをとり、index番目にその結果を書き込みます。加えて以下の操作が利用できます。timeout=Infinity])共有されたint32Arrayのindexにスレッドを紐付け、valueが保存されているか検証し、スレッドをスリープするか、タイムアウトします。値がvalueと異なる場合はすぐさま’not-equal’を返し、スレッドが起こされると’ok’を返します。タイムアウトした場合は’timed-out’を返します。主なブラウザでは、メインスレッドではこのメソッドを使用できません。count=Infinity])共有されたint32Arrayのindexに紐付けられたスレッドを、count個起こします。sizeの配列上のAtomic演算が、ロック機構を使用しない場合trueを返します。それ以外の場合はfalseを返します。APIについて、詳しくはMDNのAtomicsのページをご覧ください。ComponentsことはじめJavaScriptのBigIntで任意精度の整数値を扱うWebGL2で2Dグラフィックスを扱うJavaScriptの配列(Array)についてまとめてみたRSSプロフィール古都ことふるみやことです。フロントエンドとかいろいろやるよ。