I also don't get why the first thread is special.  You can't assume that the first thread will finish or even run first, so your progress will be jerky if join the first thread that you added to `@tl` before checking if any other thread is done.  You really should have the child threads communicate completeness to the parent by using a thread-safe `Queue` at the end of the child block after `check_simple` returns.