他の人のコードをクリーンアップしようとしていますが、クラスにpthread_mutex_t
メンバ変数が含まれているケースがたくさんあります。多くの場合、pthread_mutex_init()
は決して呼び出されず、ロック/ロック解除もされません。そのオブジェクトが範囲外になると、後で適切に処理するために何が必要なのでしょうか?ロックを解除しようとすることはできますか(init'dされていない場合はどうなりますか?)私はそれを破壊する必要がありますか?初期化されていないミューテックスが範囲外になる - クリーンアップ?
分析ツールでリソースが失われている可能性があります。何かが失われていますか?
私はそう言っていたはずです:それが使われない場合があります。それはしばしばありますが、常にそうとは限りません。 _init()は使用されないと呼び出されません - 私は確信できません。ミューテックスが_init()されていなければ、 'destroy'をコールすることはできますか? –
私は、初期化されていないミューテックスを破壊することをお勧めします。 'pthread_mutex_init()'と 'pthread_mutex_destroy()'を呼び出します。 –
ただし、 'pthread_mutex_init()'はmutexを初期化する唯一の方法ではありません。 'PTHREAD_MUTEX_INITIALIZER'で初期化することもできます。詳細については、質問からリンクされているマンページを参照してください。 –