(メインスレッドのほかに)2つの異なるスレッドがあります。
最初のものはメイン スレッド PostMessage にデータを送信します。メッセージを受信した結果、メイン スレッドは対応するグローバル変数 (異なる型) を変更します。
別のスレッド (2 番目のスレッド) がこれらの変数を定期的に読み取ります。
この場合 (メイン スレッドと 2 番目のスレッドで) 安全のためにクリティカル セクションを使用する必要がありますか?
(メインスレッドのほかに)2つの異なるスレッドがあります。
最初のものはメイン スレッド PostMessage にデータを送信します。メッセージを受信した結果、メイン スレッドは対応するグローバル変数 (異なる型) を変更します。
別のスレッド (2 番目のスレッド) がこれらの変数を定期的に読み取ります。
この場合 (メイン スレッドと 2 番目のスレッドで) 安全のためにクリティカル セクションを使用する必要がありますか?
共有変数へのすべてのアクセスをクリティカル セクション (ロック) で保護すると、コードは安全になります。
ただし、変数が正しく配置されていて、参照を格納せず、ポインター サイズを超えていない場合は、ロックの使用を回避できる場合があります。
たとえば、カウントを含む整数がある場合、ロックを使用する必要はありません。書き込みスレッドは安全に変更でき、読み取りスレッドはティアリングに悩まされることはありません。複数の書き込みスレッドがある場合は、ロックまたはインターロック機能を使用する必要があります。
変数が参照である場合は、ロックを使用する必要がある可能性があります。複合変数を形成する変数が複数ある場合も、ロックが必要になります。
アラインメントの重要性は、変数のアラインメントが正しくない場合、変数の書き込みがアトミックでなくなる可能性があることです。変数は 2 つの部分に分けて記述できます。したがって、読み取りスレッドは、部分的に更新された状態で変数を読み取ることができます。常に変数を整列します。レコードとクラスのパックを控えると、変数が整列されます。
最終的に、あなたのコードが安全かどうかは、あなたが示していないので、はっきりとは言えません。コードの説明はここまでです。このような質問のコードを投稿する必要があります。