1. Use atomic to replace lock in canceller methods
2. Add WaitAll method and unit testing