1

私は次のものを持っています:

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 つが、スレッド セーフを提供するミューテックスであると仮定しましょう。これは良い解決策ですか?これを行うよりエレガントな方法はありますか?コードをテストしましたが、動作します。ここで専門家のアドバイスが必要です。

ありがとう、

4

1 に答える 1