pulse: ensure thread safe