私が取り組んでいるプロジェクトはクリティカルセクションのカスタム実装を使用しています。 CriticalSectionLock
がスコープ外になるとifブロックの同期、C++
{
CriticalSectionLock lock(m_criticalsection);
...//Stuff inside the critical section
}
は、クリティカルセクションが終了し、次のように私は、クリティカルセクションを作成する方法です。
私の問題は、私は、クリティカルセクション内の以下のインクリメント操作を入れたいということです(私が使用することはできませんatomic_int
):
if (0 == g_envCount++)
{...
私は、次のような何かをしたいと思います:
を{CriticalSectionLock lock(m_criticalsection);
if (0 == g_envCount++)
}
{
しかし、私はそれはそれは読者のために非常に紛らわしいの作品場合でも思います。誰かがこれを行うためのより良い/よりクリーンな方法を提案することができますか?あなただけのクリティカルセクション内であることをインクリメントする必要があるので
それだけ増分が – tkausl
@tkauslを同期する必要がありますどのような不幸なことが原因で、いくつかのプラットフォームの問題ここではオプションではありませんなら、私は 'atomic_int'を使用すると思います。私は質問を更新します。 – Adam
しかし、増分だけが同期されなければならず、ifブロック全体ではないという点で正しいですか?少なくとも、あなたの最後のコード-切り取らが示唆厥 – tkausl