Can we walk the list of ops and atomically flip the state to allocate one, rather than using a lock?