В винде как и в других системах нормальным сценарием завершения приложения считается когда до завершения основного потока завершаются все остальные, так что join в том или ином виде надо будет сделать, тогда вопрос зачем себе усложнять жизнь )
На винде как раз есть PPL, он же Concurrency Runtime. И там как раз есть свой тред пул, которым ты как раз не владеешь. По сути для тебя это N detach потоков