If I have a program running multiple background threads, and the program exits on the main thread, are background threads cleaned up automagically? Or, do I need to ensure backg