207得票10回答
为什么pthread的条件变量函数需要一个互斥锁?

我正在阅读有关pthread.h的资料;与条件变量相关的函数(例如pthread_cond_wait(3))需要作为参数的互斥锁。为什么?据我所知,我将只是创建一个互斥锁来作为那个参数使用?那个互斥锁应该做什么? 为什么?因为条件变量在等待和信号操作期间需要互斥锁来保护数据结构。当线程在等待...

206得票8回答
递归锁(互斥锁)与非递归锁(互斥锁)

POSIX允许互斥锁具有递归性。这意味着同一线程可以两次锁定同一互斥锁而不会死锁。当然,它还需要两次解锁,否则没有其他线程可以获得该互斥锁。并非所有支持pthread的系统都支持递归互斥锁,但如果他们想成为POSIX兼容,他们必须支持。 其他的API(更高级别的API)通常也提供互斥锁,通常...

187得票7回答
C#中各种线程同步选项有什么区别?

有人能解释一下以下几种方式的区别吗: lock (someobject) {} 使用 Mutex 使用 Semaphore 使用 Monitor 使用其他 .Net 同步类 我就是搞不懂,前两种方式好像是一样的?

163得票9回答
return语句应该放在锁的内部还是外部?

我刚刚意识到在我的代码中,有些地方return语句在锁的内部,有些则在外部。哪种方式最好?void example() { lock (mutex) { //... } return myData; } void example() { lock...

159得票7回答
用C++11的等价物替换boost::thread和boost::mutex是明智的吗?

动机:我考虑这个问题的原因是我的天才项目经理认为boost是另一个依赖项,而且因为「你依赖于它」,所以很糟糕(我试着解释boost的质量,但过了一会儿就放弃了:( )。我想要这样做的另一个小原因是,我想学习c++11的特性,因为人们将开始使用它编写代码。 #include<threa...

148得票13回答
132得票8回答
Java中是否有互斥锁(Mutex)?

Java中是否有Mutex对象或创建它的方法?我之所以问是因为初始化为1个许可的Semaphore对象对我没有帮助。考虑以下情况:try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Excep...

122得票7回答
在JavaScript中是否需要使用互斥锁?

我看到了这个链接:在JavaScript中实现互斥。 另一方面,我读到说JavaScript中没有线程,但这到底意味着什么? 当事件发生时,它们会在代码的哪里中断? 如果JS中没有线程,那么我需要在JS中使用互斥量吗? 具体而言,我想知道使用由setTimeout()和XmlHttpR...

121得票7回答
基本互斥锁和原子整数哪个更有效?

对于像计数器这样简单的东西,如果有多个线程会增加数量。我读到互斥锁可能会降低效率,因为线程必须等待。所以,对我来说,原子计数器将是最有效的,但我读到内部基本上是一个锁?所以我猜我困惑了,任何一种方法如何比另一种更有效。

120得票5回答
Python多进程安全地写入文件

我正在尝试解决一个涉及到大量子问题的数值计算问题,并且使用Python的多进程模块(具体来说是Pool.map)将不同的独立子问题分配到不同的核心上。每个子问题涉及到大量的子子问题计算,我尝试通过将结果存储到文件中有效地进行记忆化,如果任何进程尚未计算它们,则跳过计算并仅从文件中读取结果。 ...