9

2つのスレッドを含むC++コードがあります。スレッド2のイベント「A」の後、スレッド1を一時停止(一時停止)し、スレッド2でさらにいくつかのタスクを実行し(イベント「B」など)、最後にスレッド1を再開する必要があります。これを行う方法はありますか?

私のコードは次のようになります。

HANDLE C;
DWORD WINAPI A (LPVOID in)
{
    while(1){
        // some operation
    }
    return 0;
}

DWORD WINAPI B (LPVOID in)
{
    while(1){

        //Event A occurs here

        SuspendThread (C);

        //Event B occurs here

        ResumeThread (C);
        }
    return 0;
}

int main()
{
    C = CreateThread (NULL, 0, A, NULL, 0, NULL);
    CreateThread (NULL, 0, B, NULL, 0, NULL);
    return 0;
}
4

2 に答える 2

0

win32を使用しているように見えるので、イベントを使用できます

pthreadで同様のことをしたい場合は、ここに例があります。

どちらの場合も、スレッドAは条件/イベントをテストし(設定されている場合は待機し、設定されていない場合は続行します)、スレッドBは条件/イベントを設定してクリアします。スレッドAとスレッドBの動作によっては、スレッドAとスレッドBの間にミューテックスが必要になる場合もあることに注意してください。それらは互いに破損する可能性がありますか?

于 2013-03-19T14:36:16.583 に答える