私は次のものを持っています:
f1()
{
while(1)
{
call f(2) if hardware interrupt pin goes high
}
}
f2()
{
if( th() not started )
{
start thread th()
}
else
{
return thread th() status
}
}
th()
{
time-consuming operation
}
現時点では、以下を使用して f2() で構造体を開始します。
static struct SharedData shared;
if( shared == NULL)
{
initialize shared
}
次に、sharedへのポインターをスレッドに渡します。その後、スレッドは共有を定期的に更新します。f2() は、共有の要素に基づいて th() が開始されたかどうかを認識し、共有から読み取って th() のステータスをチェックします。
sharedの要素の 1 つが、スレッド セーフを提供するミューテックスであると仮定しましょう。これは良い解決策ですか?これを行うよりエレガントな方法はありますか?コードをテストしましたが、動作します。ここで専門家のアドバイスが必要です。
ありがとう、