add timedout flags
 add a new complicated unittest
 add new unittest which could result in core dump
fixbug: if cancelled success, timed not cancelled
 fixbug: cancable_thread_pool empty use queue.size(), but should use map size