Counterflow pipelining: architectural support for preemption in asynchronous systems using anti-tokens