Having read this page a bit more I think I understand why the prgram was blocking, but if I compile with -threaded surely the readChan function shouldn't prevent the producer from producing?