Tengo dos hilos en haskell que realizan IO. (Solo imprimen). Algo parecido a lo siguiente:¿Puedo asegurarme de que Haskell realice IO atómico?
thread1 :: IO()
thread1 = putStrLn "One"
thread2 :: IO()
thread2 = putStrLn "Two"
actualmente estoy consiguiendo resultados como el siguiente:
OnTwoe
OTnweo
Cómo puedo estar seguro de que cada hilo completa su IO atómicamente?
Como ejercicio: intente escribir esto usando la memoria transaccional para ordenar el acceso al recurso. –
¡Daré una oportunidad! también cambié: conMVar lock $ (\ _ -> putStrLn "bar") – Toymakerii
No he usado este diseño, pero el diseño alternativo que menciona al final me ha funcionado bastante bien en un par de proyectos. –