CodeBlanks Logo Icon CodeBlanks

postMessage

postMessage ile worker iletişimini öğrenirsin.

postMessage

postMessage, iş parçacıkları arasında mesaj gönderen temel metoddur. İşçi tarafta parentPort.postMessage(data) ile anaya veri gönderirsin. Ana tarafta worker.postMessage(data) ile işçiye veri gönderirsin.

Gönderilen veri kopyalanır, paylaşılaz; bu yüzden büyük nesneler için SharedArrayBuffer tercih edilir. Mesajlar JSON olarak serileştirilebilen düz nesneler olmalıdır; fonksiyon veya sınıf örneği gönderemezsin.

parentPort.postMessage

İşçi iş parçacığında parentPort anaya bağlanan portu temsil eder. parentPort.postMessage(result) çağrısı sonucu anaya gönderir. Ana tarafta worker.on("message", handler) ile bu mesaj yakalanır.

İşçi bittiğinde portu kapatmak iyi bir alışkanlıktır. parentPort.close() kanalı kapatır ve exit olayını tetikler. Bu, kaynak sızıntılarını önler.

Uygulama parentPort null mu kontrol et

parentPort'u worker_threads'den içe aktar. parentPort === null sonucunu yaz. (Ana iş parçacığında parentPort null'dur.)

Başlangıç kodu

index.js
// modülü içe aktar, portu al

// null mı kontrol et

Örnek çözüm

index.js
const { parentPort } = require("worker_threads");
console.log(parentPort === null);

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Parçayı rolüne eşle

Kavram Anlamı
postMessage Mesaj gönderir
parentPort Anaya kanal
worker.on("message") Mesaj bekler
message olayı Mesaj yakalar

2 Metod adını tamamla

Soru
parentPort.____({ result: 42 })
Cevap
parentPort.postMessage({ result: 42 })

Açıklama: parentPort.postMessage anaya mesaj gönderir.

3 parentPort.postMessage ne yapar?

  • Anaya mesaj gönderir Doğru cevap
  • İşçiyi durdurur
  • Dosya okur
  • Port kapatır

Açıklama: parentPort.postMessage anaya mesaj gönderir.

İleri seviye bölümündeki tüm dersler