要するに、静的初期化の特定の部分を main()/DllMain() の先頭にできる限り近づけて発生させたいと考えています。これが、静的初期化中に最後に呼び出されるコンストラクタであることは、おそらく許容されるでしょう。
これはほぼ確実にコンパイラ固有の実装になるため、ビジュアル C++ コンパイラ (VS 2010 以降) を使用してこれを行うことを特に検討しています。将来的には、おそらく GCC と Clang でこれを行う必要があるでしょうが、それは差し迫った問題ではありません。
長い話は、静的に初期化され、コンストラクターでスレッドを作成する基本ライブラリーにオブジェクトがあるということです。このスレッドは、ライブラリ内の他の静的に初期化されたオブジェクトに依存しているため、静的初期化で競合状態が発生します。他のすべての静的初期化が完了するまでスレッドの作成を一時停止または回避できる場合、これで問題が解決するはずです (単純な Sleep(5000) で問題が回避されますが、これは厳密な解決策ではありません)。
main() 関数で初期化関数を明示的に呼び出すこともできますが、このライブラリを使用する 20 以上のバイナリがあるため、これは理想的ではありません。可能であれば、この責任をコンパイラに押し付けたいと思います。