1

私は3つのPOSIXを持っていますか?セマフォといくつかのエラー状態。セマフォはグローバルにアクセスできます。エラーが発生する前にそれらが破棄されたかどうか (または最初に初期化されたかどうか) を確認するにはどうすればよいですか?

// Example c program
#include <semaphore.h>

sem_t mySemaphore;

void errorHandling(){
    // if (mySemaphore exists)
    //     sem_destroy(&mySemaphore);
}

int main(){

    // possible errors

    if ((sem_init(&mySemaphore, 0, 1)) < 0)
        errorHandling();

    // more possible errors and multi threading stuff

    sem_destroy(&mySemaphore);

    return (EXIT_SUCCESS);
}
4

2 に答える 2

1

デフォルトでは false である別のフラグが必要です。初期化されると true に設定され、破棄されると false に戻ります。

マルチスレッド アプリの場合は、mutex でこれらのアクセスを保護してください。また、それらすべてを 1 か所で処理する関数を作成することを強くお勧めします。

于 2012-11-24T03:11:08.013 に答える