Memory64, multithreading and the 128-bit atomics operations to combat the ABA problem
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- wasm
- Ambito
- distributed-systems, operating-systems
Direzione di ricerca
Non vengono indicati file o test. Inizia esaminando i requisiti di WebAssembly threads e Memory64 descritti qui, in particolare le operazioni a 128 bit richieste load/store/CAS/exchange/add/and/or/xor; il lavoro è completato quando è stato stabilito se queste operazioni possono essere specificate e supportate nelle modalità multithreading+Memory64, oppure quando sono stati documentati i vincoli che le escludono.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In native lock-free programming, a tricky issue is the ABA problem, which is caused by two or more atomic mutations by other threads, occurring between an observer thread checking on a shared state variable.
https://en.wikipedia.org/wiki/ABA_problem
The common elegant solution for this is to use auxiliary information, which typically ends up with a shared state block of "2x sizeof(ptr)" kind of a setup. Native compilation targets allow performing atomic operations on such 128-bit quantities, on 64-bit platforms.
When porting Unity to use WebAssembly's Memory64, we now find ourselves in a pickle with this scheme. Multithreading libraries that Unity uses, perform 128-bit atomic operations on shared memory (the usual: load/store/cas/exchange/add/and/or/xor).
We are looking at removing these 128-bit CAS support in the library code that assume its existence. Have there been considerations for adding 128-bit atomic operation support to multithreading+memory64 modes, or would that be something possible to consider?
- Lingua principale
- WebAssembly
- Stelle
- 767
- Fork
- 54
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di WebAssembly/threads
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
WebAssembly/threads#254 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
WebAssembly/threads#245 · 1 reazione ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
WebAssembly/threads#240 ·
-
Branch renaming Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 20/100
WebAssembly/threads#237 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
WebAssembly/threads#234 · 3 commenti ·
Tutte le issue di WebAssembly/threads
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
huggingface/pytorch-image-models#2800 · 1 commento ·
-
bug examples invalid iris
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
ai_reviewed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
ydb-platform/ydb#53838 · 3 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NovaSky-AI/SkyRL#2263 ·