https://www.schaertl.me/posts/a-bare-bones-user-level-thread-library/ https://github.com/brenns10/userspace_cooperative_multitasking https://github.com/abertschi/userspace-threading https://stackoverflow.com/questions/66141130/context-switch-between-user-space-thread-and-stdthread-in-a-multi-threaded-env hebras tipo usuario: * usar alguna de los cientos de implementaciones existentes * implementaciones caseras pueden utilizar soluciones de varios niveles: * alto nivel: getcontext/setcontext, libc SystemV --> obsoleto!!! * nivel medio-alto: sigsetjmp/siglongjmp --> lento por llamada al sistema para preservar máscara de señales * nivel medio-bajo: setjmp y longjmp --> más rápido pero menos portable * nivel bajo: swapcontext, llamada al sistema de Linux * ... * nivel bajo: hazlo todo tú mismo, muy mala idea... pero se aprende mucho :) cambiar nombre de caller_save y cpu_inline por as::context*