Вникать лень но что сказать имею.
В винде _НИЗЗЯ_ ждать завершения потока из DllMain — это вызовет дедлок по неочевидным для простого писателя кода причинам. Это означает в том числе что нельзя ждать завершения потока в деструкторе статик объектов, которые объявлены в длл (так как эти деструкторы исполняются из DllMain).
Как много веселых ребят, и все делают велосипед...