Penyampaian Pesan dan Kanal Antar-Thread WASM
Koordinasikan pekerja WASM paralel menggunakan pola penyampaian pesan dan abstraksi kanal, bukan memori bersama mentah.
Penyampaian Pesan dan Kanal Antar-Thread WASM adalah pelajaran WebAssembly (WASM) for High Performance Apps gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar WebAssembly (WASM) for High Performance Apps, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus WebAssembly (WASM) for High Performance Apps mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Two Models of Concurrency
Concurrent systems coordinate either by sharing memory (SharedArrayBuffer + atomics) or by passing messages. Message passing avoids many data races by design.
postMessage Basics
Web Workers communicate with postMessage. Data is structured-cloned, so each side gets its own copy.
const worker = new Worker("worker.js");
worker.postMessage({ cmd: "start", n: 1000 });
worker.onmessage = (e) => console.log("result", e.data);Transferable Objects
To avoid copying large buffers, transfer ownership instead of cloning.
const buf = new ArrayBuffer(1024 * 1024);
worker.postMessage({ buf }, [buf]);
// buf is now neutered in the senderDesigning a Channel
A channel is a typed queue abstraction layered over postMessage: a send side and a receive side with backpressure and request IDs.
Request/Response Correlation
Attach a unique id to each message so async replies can be matched to their originating request via a pending-promise map.
const pending = new Map();
let nextId = 1;
function call(payload) {
const id = nextId++;
return new Promise((res) => {
pending.set(id, res);
worker.postMessage({ id, payload });
});
}Fan-Out Work Pools
For data parallelism, spawn N workers and round-robin tasks to them. Collect results as they arrive, preserving order with the request IDs.
Combining with Shared Memory
Message passing for control, SharedArrayBuffer for bulk data is a powerful hybrid: send a small message saying which slice to process, while the data lives in shared memory.
Avoiding Deadlocks
Pure message-passing systems still deadlock if two parties each wait for the other. Keep protocols acyclic and prefer non-blocking sends.
Serialization Cost
Structured clone is convenient but costly for big graphs. Prefer transferables or shared memory when payloads grow large.
Worker Lifecycle
Create workers up front in a pool and reuse them; spinning up a worker per task wastes time loading and instantiating the WASM module each time.
A Channel-Based Pipeline
Chain stages: source worker emits chunks, a transform worker processes them, a sink worker aggregates — each connected by a channel for a clean streaming pipeline.
Quick Check
How do you send a large ArrayBuffer to a worker without copying it?
Recap
You explored message passing with postMessage, transferables to avoid copies, and channel abstractions with request IDs and worker pools. Hybrid designs pair messages for control with shared memory for bulk data.
Belajar WebAssembly (WASM) for High Performance Apps dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penyampaian Pesan dan Kanal Antar-Thread WASM” gratis?
Ya — teks lengkap “Penyampaian Pesan dan Kanal Antar-Thread WASM” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus WebAssembly (WASM) for High Performance Apps, upgrade ke CoddyKit PRO. Kursus WebAssembly (WASM) for High Performance Apps mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penyampaian Pesan dan Kanal Antar-Thread WASM”?
Koordinasikan pekerja WASM paralel menggunakan pola penyampaian pesan dan abstraksi kanal, bukan memori bersama mentah. Kamu berlatih WebAssembly (WASM) for High Performance Apps dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai WebAssembly (WASM) for High Performance Apps?
Tidak diperlukan pengalaman sebelumnya. WebAssembly (WASM) for High Performance Apps di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Penyampaian Pesan dan Kanal Antar-Thread WASM” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran WebAssembly (WASM) for High Performance Apps ini?
Ya. Setiap pelajaran WebAssembly (WASM) for High Performance Apps menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Web Workers dengan Thread WASM
- SharedArrayBuffer & Operasi Atomik untuk WASM
- Merancang Aplikasi WASM Konkuren
- Penyampaian Pesan dan Kanal Antar-Thread WASM