そのため、CreateThread と CRT によってメモリ リークが発生する可能性があり、シグナルが機能せず、_beginthread または _beginthreadex 関数を使用する必要があることを理解しています。
アプリケーションを作成する場合はこれで問題ありませんが、他のアプリケーション (プレーンな c dll、com オブジェクト、プラグインなど) の dll などを作成する場合はどうでしょうか。DLL を呼び出すスレッドがどのように作成されたかを保証する方法はありません。たとえ __beginthread(ex) を使用したとしても、CRT の実装\バージョンが異なる可能性が高いでしょう。
では、プログラマーに期待されていることは正確には何ですか? CRTを使用しないのですか?内部スレッドを生成し、すべての作業をそのスレッドにオフロードしますか (呼び出しスレッドで CRT を使用せずに)? スレッドの作成方法に関係なく、すべてのスレッドを正しくセットアップおよびシャットダウンするための DllMain とアタッチ/デタッチに関するいくつかのトリックはありますか?