コードを一度だけ実行したい。bool 型のグローバル変数に基づくソリューションを使用しました。私の質問は、それが最善の解決策ですか?
備考:ucos-IIを使用しています。
if (TRUE == Lock)
{
/*Code to execute one time*/
}
/*The reste of the code*/
静的変数を使用した単純なコード。
static bool once = false;
if (once == false)
{
once = true;
// do your "once" stuff here
}
このチェックをいつどこで行うかによって異なります。
次のような API があるとします。
void func(bool flag)
{
if(flag)
{
// Code for only one condition
}
else
{
//Rest of the code
}
}
次に、TRUE または FALSE を渡すだけで、必要なコードが 1 回だけ実行されるようにすることができます。
それ以外の場合、グローバル変数を持つアプローチも問題ありませんがLOCK
、必要なブロックが実行されたら設定を解除する必要があります
if( LOCK == TRUE)
{
//Execute code
LOCK = FALSE;
}
LOCK
に初期化されたグローバル変数があることを願っています1
。
ノート:
フラット メモリ システムを使用している場合、グローバル変数を使用することは常に危険であるため、回避する傾向があります。本当に必要な場合は、はい、グローバル変数を使用します。それ以外の場合は、最初のアプローチで提案したフラグを使用できます