nit: what do you think about always calling adb_cond_broadcast and let should_kill_threads decide wheter the cleanup is done or not?