Ho due thread in haskell che eseguono l'IO. (Stampa solo). Qualcosa di simile a quanto segue:Posso garantire che Haskell esegua l'I/O atomico?
thread1 :: IO()
thread1 = putStrLn "One"
thread2 :: IO()
thread2 = putStrLn "Two"
Attualmente sto ottenendo risultati come il seguente:
OnTwoe
OTnweo
Come posso garantire che ogni thread completa il suo IO atomico?
Come esercizio: provare a scrivere questo utilizzando la memoria transazionale per ordinare l'accesso alla risorsa. –
Lo farò uno scatto! anche io ho cambiato: withMVar lock $ (\ _ -> putStrLn "bar") – Toymakerii
Non ho usato questo disegno ma il design alternativo che menzioni alla fine ha funzionato abbastanza bene per me in un paio di progetti. –