问题标签 [recursive-mutex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows上的递归互斥锁?
据我了解,在 Windows 上 CRITICAL_SECTION 只能用作非递归互斥锁。要获得递归互斥锁,您必须使用 OpenMutex 和朋友。
但是,AFAIU、Win32 Mutex 不能与条件变量一起使用(InitializeConditionVariable 等)
有没有办法在 Windows 上将递归互斥锁与条件变量结合使用?
c++ - 如何使用递归 QMutex
我正在尝试使用递归 QMutex,我阅读了 QMutex 类参考,但我不明白该怎么做,有人可以举个例子吗?我需要一些方法来锁定 QMutex,可以在调用 lock 方法之后或之前解锁。如果递归互斥锁不是方法,还有其他方法吗?
pthreads - 是否有一种可移植的方式来静态初始化递归互斥锁?
根据 POSIX,我可以通过这种方式静态初始化互斥锁:
但是,如果我希望互斥锁是递归的怎么办?互斥锁默认是非递归的,并且无法为静态初始化提供互斥锁属性。
c++ - 你能把 std::recursive_mutex 和 std::condition_variable 结合起来吗?
你可以结合std::recursive_mutex
,std::condition_variable
意思是做这样的事情:
如果不允许,那为什么不呢?
我正在使用 VC++11。
c++ - std::mutex 与 std::recursive_mutex 作为类成员
我看到有些人讨厌recursive_mutex
:
http://www.zaval.org/resources/library/butenhof1.html
但是在考虑如何实现一个线程安全的类(互斥锁保护)时,在我看来很难证明每个应该受互斥锁保护的方法都是互斥锁保护的,并且互斥锁最多被锁定一次。
因此,对于面向对象的设计,是否应该std::recursive_mutex
默认并std::mutex
在一般情况下将其视为性能优化,除非它仅用于一个地方(仅保护一种资源)?
为了清楚起见,我说的是一个私有的非静态互斥体。所以每个类实例只有一个互斥锁。
在每个公共方法的开头:
multithreading - 递归(可重入)互斥锁是如何工作的?
我在http://preshing.com/20120305/implementing-a-recursive-mutex和http://en.wikipedia.org/wiki/Reentrant_mutex上阅读了两篇关于递归(可重入)互斥锁的文章,但这两篇文章都没有感觉。
有人可以解释递归(可重入)互斥锁的工作原理吗?
(我发现解释递归互斥锁如何工作的材料很少。如果有人有很好的解释链接,我会关闭这个问题。)
谢谢 !
c++ - 如何使用 boost 实现一个递归锁,它跨越多个方法?
我有一个类可以打开事务,将操作添加到队列,然后关闭事务。在 open->close 生命周期中,我想使用递归互斥锁,以便在任何时候只有一个线程可以打开事务。所有其他线程都被阻塞,直到当前事务结束。
在这种情况下,我很难确定如何使用 a recursive_mutex
,因为锁的存在时间会比单个方法的范围更长。谁能建议我如何在这里应用锁定?
c++ - 递归互斥锁背后的想法
我在一个学校实验室工作,我们被指示为计数程序创建一个递归互斥锁。我写了一些代码(不起作用),但我认为这主要是因为我不理解使用递归互斥锁背后的真正想法。谁能详细说明递归互斥锁应该做什么/看起来像什么?
一般说明:我不是在要求答案,只是对递归互斥锁应该做什么进行澄清。
另外,如果有人好奇,这里是所需的代码。我正在编辑/实现的代码是 recmutex.c。
remutex.h
recmutex.c:包含递归互斥锁的函数
count_recursive.cc:上面提到的计数程序。使用 recmutex 函数。
c - 错误检查互斥锁与递归互斥锁
我想知道是否可以使用互斥锁自己制作递归互斥锁类型,PTHREAD_MUTEX_ERRORCHECK
结果如下:
我发现这种类型的递归互斥锁比具有PTHREAD_MUTEX_RECURSIVE
属性的互斥锁快很多:
测试代码(每次调用1000000次):
pthread_recursivemutex_t
几乎是两倍的速度pthread_mutex_t
?!但两者的行为方式相同......?
这个解决方案安全吗?
c - 我的递归互斥锁与 pthread_mutex_t(类型:递归)(转发、推送)
我想知道是否可以使用互斥锁自己制作递归互斥锁类型,PTHREAD_MUTEX_ERRORCHECK
结果如下:
我发现这种类型的递归互斥锁比具有PTHREAD_MUTEX_RECURSIVE
属性的互斥锁快很多:
测试代码(每次调用1000000次):
pthread_recursivemutex_t
几乎是两倍的速度pthread_mutex_t
?!但两者的行为方式相同......?
顺便提一句:
给
m: 0 11
m: 11
UNLOCKED!!: 0
m2: 11
这意味着线程 2 在锁定时没有机会获得互斥锁。