0
私は、セマフォーのロック/リリース呼び出しの間に不一致があるかどうかを検出する静的解析ツールに取り組んでいます。検出はVxWorks RTOSに固有です。関数への引数としてセマフォーを渡す
私は論理的にコードが理にかなっている。このテストケース
void fun(char semid);
char id,i;
int main()
{
id = semCreate(); //initializing a semaphore
fun(id);
semGive(id); //semaphore release call
return 0;
}
void fun(char semid)
{
semTake(semid); //semaphore lock call
i++;
}
に出くわした、私たちができることをセマフォのロックのためにそこに該当するリリースはあまりにもだが、これはセマフォを使用しての正しい方法は何ですか?これは通常のプログラミングの練習ですか、それとも明白に無効ですか?
上記のようなセマフォの使用をサポートするか、または拒否するいくつかの詳細なコードは高く評価されるでしょう。ロックと解除を散乱
基本的に正しい使用法は、引数として渡された関数自体のセマフォをロックして解放することです。 – user3917849
@ user3917849はい。これにより、正しい数のロックおよびリリースコールがあるかどうかを確認することも容易になります。特別な場合がありますが、これらのコールを分けてはいけませんが、これを避けることをお勧めします。 –