Ich habe eine Transaktion auf unbestimmte Zeit aus irgendeinem Grund fehlschlagen, und ich würde gerne Trace-Anweisungen im Inneren verwenden. Zum Beispiel, um den Zustand des MVar des zu drucken, bevor die Transaktion in diesem Fragmente Ausführung:Ist es sicher, Trace in einer STM-Transaktion zu verwenden?
data_out <- atomically $ do
rtg_state <- takeTMVar ready_to_go
JobDescr hashid url <- T.readTBChan next_job_descr
case rtg_state of
Ready_RTG n -> do
putTMVar ready_to_go $ Processing_RTG n
putTMVar start_harvester_browser hashid
putTMVar next_test_url_to_check_chan hashid
putTMVar next_harvest_url hashid
return (n,hashid,url)
_ -> retry
Würde, die das Programm segfault oder miss-Verhalten machen?
Der Raketenstartcode wird dann in der IO-Monade beibehalten. Vielen Dank! – dsign
Ich finde es wert, darauf hinzuweisen, dass es kein einziger Raketenstart ist, der in diesem Fall ernsthafte internationale Nebenwirkungen verursacht - es sind die 735 nuklearen Salven, als die Transaktion einige Male wiederholt wurde, auf die man achten muss. ;) – kqr