5

pthreadは、再帰的ミューテックスがロックされた回数を照会できるメソッドをサポートしていますか?

4

2 に答える 2

5

これを行うための公式のポータブルな方法はありません。

この動作は、ロックカウントを自分で追跡することで、移植可能になります。おそらく、ロックおよびロック解除関数のラッパーを作成し、ミューテックスを使用して構造体を作成し、メンバーとしてカウントします。

于 2009-11-19T04:23:02.417 に答える
1

これは、counting_mutexなどの2番目のミューテックスを使用して実行できます。

次に、pthread_mutex_lockの代わりに:

pthread_mutex_lock(&counting_mutex);
pthread_mutex_lock(&my_mutex);
pthread_mutex_unlock(&counting_mutex);

pthread_mutex_unlockの代わりに:

pthread_mutex_lock(&counting_mutex);
pthread_mutex_unlock(&my_mutex);
pthread_mutex_unlock(&counting_mutex);

次に、pthread_mutex_countを追加できます。

int count = 0, i = 0;
pthread_mutex_lock(&counting_mutex);
while (!pthread_mutex_unlock(&my_mutex)) count++;
while (i++ < count) pthread_mutex_lock(&my_mutex);
pthread_mutex_unlock(&counting_mutex);
return count;
于 2019-10-26T13:28:39.420 に答える