Design: Shared Memory und Atomics

Erstellt am 20. Juli 2016  ·  5Kommentare  ·  Quelle: WebAssembly/design

Laut Agenda für das 53. Treffen von Ecma TC39 gehen Shared Memory und Atomics in Phase 3. Das bedeutet, dass ihre API eingefroren wird. Daher könnte Dienstag, der 26. Juli, zu einer Frist werden, um Änderungen an den Spezifikationen vorzunehmen, falls die Vision der WebAssembly-Community-Gruppe von der Vision von TC39 abweicht.

ES-Vorschlag: https://github.com/tc39/ecmascript_sharedmem

Hilfreichster Kommentar

@chicoxyzzy , hier gab es eine längere Diskussion über sab+wasm: https://github.com/tc39/ecmascript_sharedmem/issues/59

@taisel , jetzt bin ich pedantisch, aber trotzdem: Die "Hauptthread-Einschränkungen" sind technisch nicht Teil dieser Spezifikation. Die Spezifikation ermöglicht es einigen Threads, die Blockierung abzulehnen (nach Kriterien, die von der Implementierung ausgewählt wurden), und diese Einrichtung wird eindeutig durch die Haupt-Threads des Browsers motiviert, aber eine Verwendung von JS + gemeinsam genutztem Speicher in einer anderen Einstellung als der Browser muss dies nicht tun diese Einschränkung haben. Ich sehe nicht, wie wasm in einer anderen Situation ist. Außerdem konnte ich sehen, dass einige Arten von Workern, wie SharedWorkers, Shared Memory verwenden, aber nicht blockieren dürfen.

Wenn TC39 von Browsern verlangen würde, das Blockieren des Hauptthreads zuzulassen, würde dies in der Tat zu nichts Fruchtbarem führen, sondern nur zu Streit führen und wahrscheinlich die Implementierung des gesamten Vorschlags für einen gemeinsamen Speicher gefährden. Was wir jetzt haben, ist eine ziemlich konservative Erweiterung der Sprache und der Browser, die sich in das bestehende Web-Ökosystem einfügt. Wir wissen, dass Proxying einige Probleme lösen kann; wir wissen, dass "asymmetrisches" Blocken (Arbeiter blockieren, aber der Hauptthread nicht) andere Probleme lösen kann; Wir müssen einige Erfahrungen damit sammeln, um herauszufinden, wo die wahren Schwachstellen liegen, und dann können wir sehen, wie wir diese angehen können. Der Versuch, die Blockierung des Hauptthreads zu erzwingen, ist in diesem Stadium die nukleare Option.

Alle 5 Kommentare

Meine Frage ist: Ist jeder damit einverstanden, die Einschränkungen des Hauptthreads in dieser Spezifikation auf WASM zu kopieren?

@chicoxyzzy , hier gab es eine längere Diskussion über sab+wasm: https://github.com/tc39/ecmascript_sharedmem/issues/59

@taisel , jetzt bin ich pedantisch, aber trotzdem: Die "Hauptthread-Einschränkungen" sind technisch nicht Teil dieser Spezifikation. Die Spezifikation ermöglicht es einigen Threads, die Blockierung abzulehnen (nach Kriterien, die von der Implementierung ausgewählt wurden), und diese Einrichtung wird eindeutig durch die Haupt-Threads des Browsers motiviert, aber eine Verwendung von JS + gemeinsam genutztem Speicher in einer anderen Einstellung als der Browser muss dies nicht tun diese Einschränkung haben. Ich sehe nicht, wie wasm in einer anderen Situation ist. Außerdem konnte ich sehen, dass einige Arten von Workern, wie SharedWorkers, Shared Memory verwenden, aber nicht blockieren dürfen.

Wenn TC39 von Browsern verlangen würde, das Blockieren des Hauptthreads zuzulassen, würde dies in der Tat zu nichts Fruchtbarem führen, sondern nur zu Streit führen und wahrscheinlich die Implementierung des gesamten Vorschlags für einen gemeinsamen Speicher gefährden. Was wir jetzt haben, ist eine ziemlich konservative Erweiterung der Sprache und der Browser, die sich in das bestehende Web-Ökosystem einfügt. Wir wissen, dass Proxying einige Probleme lösen kann; wir wissen, dass "asymmetrisches" Blocken (Arbeiter blockieren, aber der Hauptthread nicht) andere Probleme lösen kann; Wir müssen einige Erfahrungen damit sammeln, um herauszufinden, wo die wahren Schwachstellen liegen, und dann können wir sehen, wie wir diese angehen können. Der Versuch, die Blockierung des Hauptthreads zu erzwingen, ist in diesem Stadium die nukleare Option.

@lars-t-hansen Yup, und ich habe diese weiche Einschränkung wiederholt, um die Diskussion anzuregen.

Es gibt immer noch eine Gruppe von Leuten, von denen ich dachte, dass sie die Portierung so schmerzlos wie möglich machen wollen, und ich kenne nicht viele Zugeständnisse, die das WASM-Komitee ihnen in den Weg legen möchte.

Um das oben Gesagte zu ergänzen, bietet

Der anfängliche Threading-Vorschlag ist so konzipiert, dass er dem Verhalten von SAB+-Arbeitern entspricht, daher ist es unwahrscheinlich, dass er hier das Boot erschüttert. Wir haben darüber gesprochen, "reine Wasm"-Threads zu haben, die keinen JavaScript-Kontext haben, aber entschieden, dass dies besser in Angriff genommen wird, nachdem wir die Feature-Parität mit JavaScript + SAB erreicht haben.

Darüber hinaus ist die HTML-Spezifikation jetzt in die WRT-Blockierung Atomics.wait aufrufen).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

JimmyVV picture JimmyVV  ·  4Kommentare

cretz picture cretz  ·  5Kommentare

jfbastien picture jfbastien  ·  6Kommentare

ghost picture ghost  ·  7Kommentare

bobOnGitHub picture bobOnGitHub  ·  6Kommentare