Termination in Impure Concurrent Languages