pthreads 是否支持查询“锁计数”的方法?递归互斥体?

发布于 2024-08-11 08:50:03 字数 42 浏览 6 评论 0原文

pthreads 是否支持任何允许您查询递归互斥锁被锁定的次数的方法?

Does pthreads support any method that allows you to query the number of times a recursive mutex has been locked?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假情假意假温柔 2024-08-18 08:50:03

没有官方的、可移植的方法来做到这一点。

您可以通过自己跟踪锁定计数来轻松获得此行为 - 也许可以通过为锁定和解锁函数编写包装器,并使用互斥锁和计数作为成员创建一个结构。

There is no official, portable way to do this.

You could get this behavior portably by tracking the lock count yourself—perhaps by writing wrappers for the lock and unlock functions, and creating a struct with the mutex and count as members.

像你 2024-08-18 08:50:03

您可以使用第二个互斥锁来完成此操作,例如counting_mutex。

然后代替 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;

You can do it using a second mutex, e.g. counting_mutex.

Then instead of pthread_mutex_lock:

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

instead of pthread_mutex_unlock:

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

then you can add 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文