• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

197
Views
¿Se supone que funciona pasar Int32Array en lugar de SharedArrayBuffer?

Tengo un código que crea un búfer de matriz compartido y pasa Int32Array y NO SharedArrayBuffer al trabajador:

 let worker = new Worker(...); worker.postMessage({ position: { x: createArray(), y: createArray() }, velocity: { x: createArray(), y: createArray() } }); function createArray(size = 1024) { let buffer = new SharedArrayBuffer(size); return new Int32Array(buffer); }

En el trabajador estoy actualizando los enteros resultantes en un bucle a través de la matriz.

 let components = e.data; let velocityX = Atomics.load(components.velocity.x, shipEid); let velocityY = Atomics.load(components.velocity.y, shipEid); Atomics.add(components.position.x, shipEid, velocityX); Atomics.add(components.position.y, shipEid, velocityY);

Ahora, mi pregunta es, ¿es válido pasar Int32Array al trabajador en lugar de SharedArrayBuffer ? Honestamente, ni siquiera me di cuenta de que estaba haciendo esto hasta mucho más tarde, y ahora que me doy cuenta, me pregunto por qué funciona. Pensé que tenía que pasar SharedArrayBuffer al trabajador para compartir la memoria entre el trabajador y el proceso principal. ¿Es esto realmente parte de la especificación para que funcione de esta manera, o es algo específico de Chrome que fallará para otros navegadores y posiblemente fallará en Chrome en el futuro?

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Sí, esto es válido. Tenga en cuenta que en realidad tampoco está pasando el Int32Array : está pasando un objeto que tiene propiedades que son objetos que tienen propiedades que son matrices escritas. Esto funciona porque el argumento de postMessage en realidad está clonado estructuralmente , y cuando el algoritmo de clonación alcanza el SharedArrayBuffer que es parte de su estructura, entonces se clona en un nuevo objeto de búfer que comparte la memoria subyacente .

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error