As does perl. You need to declare variables as shared, there is apparently some performance hit, but it's mostly localized to the shared variables, so reasonably manageable. I've actually found it easier to work with than implicit shared data across all threads because you actually need to think about the exposed surface area and how you can minimize it.