How to Survive the Multicore Software Revolution (or at Least Survive