Wait until deadline variant
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- wasm
- Área
- operating-systems
Línea de trabajo
El issue no nombra archivos ni pruebas. Empieza leyendo la dependencia #230 y después revisa la discusión de la propuesta sobre Atomics.waitAsync y las esperas absolutas frente a las relativas en distintos sistemas operativos y hardware embebido. El resultado debería ser una variante de espera basada en un plazo, especificada con una semántica clara y con su relación con la forma existente basada en una duración.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
This obviously depends on #230.
Waiting for a duration is useful for simple blocking waits, but event loops generally find deadlines more convenient to work with, since you can just throw all the deadlines into a heap, sort by deadline, and (if your loop is multi-threaded) make your wait condition include timer add/remove events. Browser runtimes would already likely need a similar model anyways because of Atomics.waitAsync, but it's easy for a runtime using one model to expose the other.
Also, the type of wait differs heavily between platforms, with some accepting absolute deadlines, some accepting relative timeouts, and some accepting both:
- Operating systems:
- Linux: all futex waits other than
FUTEX_WAITuse absolute deadlines, and even that one has an absolute alternative documented in its manpages. - Fuschia only uses absolute deadlines in its
zx_futex_waitsyscall, and offers no relative equivalent. - macOS provides both
os_sync_wait_on_address_with_deadlineandos_sync_wait_on_address_with_timeout. - OpenBSD and Windows only offer relative timeouts in their APIs.
pthread_condvar_timedwaitonly uses absolute timeouts.
- Linux: all futex waits other than
- Embedded hardware:
- 32-bit ARM's SysTick is effectively timeout-based. It decrements every tick until it hits zero, in which it then triggers an interrupt. Setting the register essentially sets the number of ticks to wait before sending the interrupt.
- RISC-V's privileged spec uses
*timecmpregisters corresponding to*timetargets and triggers an interrupt whenever they're equal, effectively using a deadline-based system. - x86-64's HPET works nearly identically to RISC-V's mechanism. (This mostly only has relevance for VM-based server-side runtimes.)
- The real-time clock specified by ACPI for motherboards uses deadlines. (This is sometimes used on high-end microcontrollers.)
Will note that it's easy to do one in terms of the other.
- If all waits are absolute, relative waits are as simple as using a deadline of
current_time() + timeout. - If all waits are relative, absolute waits are as simple as using a timeout of
max(target_time - current_time(), 0).
- Lenguaje dominante
- WebAssembly
- Estrellas
- 769
- Forks
- 54
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de WebAssembly/threads
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
WebAssembly/threads#254 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
WebAssembly/threads#253 · 6 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
WebAssembly/threads#245 · 2 reacciones ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
WebAssembly/threads#240 ·
-
Branch renamingAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 20/100
WebAssembly/threads#237 ·
Todos los issues de WebAssembly/threads
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
dragonflyoss/nydus#2135 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Medio día Aptitud para principiantes 68/100
godotengine/godot#124296 ·
Los mantenedores suelen responder en 1 día
-
ts-compat
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
component:ktuner
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
agentic-os-org/ANOLISA#6697 · 4 comentarios ·
Los mantenedores suelen responder en 1 día