[atomics.types.operations]/[atomics.wait] Clarify the behavior of `constexpr` atomic `wait()`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Documentazione
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- cpp
- Ambito
- documentation
Direzione di ricerca
Inizia leggendo il testo di [atomics.types.operations]/[atomics.wait], le clausole collegate di eel.is e il documento WG21 P3309R3. Determina se lo standard debba escludere esplicitamente le operazioni di attesa atomica dalle espressioni costanti e se le API di attesa elencate possano essere coperte insieme; il lavoro è completato quando è disponibile una chiarificazione normativa revisionata o una motivazione concordata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I find it very odd that https://eel.is/c++draft/atomics.types.operations#lib:wait,atomic doesn't specify what happens during constant evaluation.
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html#wait argues that wait() during compile time would exceed implementation limits, but there is no implementation limit that's clearly exceeded here. Why shouldn't wait() be allowed to deadlock the compiler frontend? "system clock time" or "execution steps" are not limits in [implimits] after all, and even if were, that's not a normative index.
Perhaps an argument against deadlocking the frontend is that https://eel.is/c++draft/intro.progress#1 specifies that any thread (presumably including the compiler frontend thread for constant evaluation) will make progress eventually. Core language UB is not a constant expression, and that includes [intro], so I guess that makes the call to wait() immediately invalid.
A possible way to clarify it is to say that atomic waiting operations are not constant expressions (either normatively or as a note), to include atomic_flag_wait, atomic_wait, atomic::wait, atomic_ref::wait, etc. in one fell swoop.
- Lingua principale
- TeX
- Stelle
- 221
- Fork
- 813
- Merge medio
- 17h 45m
- PR unite (30g)
- 34
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
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 cplusplus/draft
-
P2-Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
P2-Bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
[dcl.array] Grammar typo Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Tutte le issue di cplusplus/draft
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
Git-it-App/git-it-electron#1047 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
neondatabase/website#5944 ·
-
📕documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
db-ux-design-system/core-web#8239 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
libsdl-org/sdlwiki#1008 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100