Questions tagged «mutex»

互斥锁(“互斥”)是一种机制,当从多个线程同时访问(特别是更改)相同的数据或资源时,可以确保完整性。

6
提高boost_shared_mutex的示例(多次读取/一次写入)?
我有一个多线程应用程序,该应用程序必须经常读取一些数据,并偶尔更新数据。现在,互斥锁可以确保对数据的安全访问,但是这很昂贵,因为我希望多个线程能够同时读取,并且仅在需要更新时才将它们锁定(更新线程可以等待其他线程完成)。 。 我认为这是boost::shared_mutex应该做的,但是我不清楚如何使用它,也没有找到明确的例子。 有人有我可以用来入门的简单示例吗?


8
Java中是否有Mutex?
Java中是否有Mutex对象或一种创建对象的方法?我问是因为用1许可初始化的Semaphore对象对我没有帮助。考虑这种情况: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } 如果在第一次获取时发生异常,则catch块中的释放将增加许可,并且该信号量不再是二进制信号量。 正确的方法是吗? try { semaphore.acquire(); //do stuff } catch (Exception e) { //exception stuff } finally { semaphore.release(); } 上面的代码是否可以确保信号量是二进制的?


7
JavaScript需要互斥吗?
我看过这个链接:在JavaScript中实现互斥。另一方面,我已经读到javascript中没有线程,但这到底是什么意思? 当事件发生时,它们可以在代码中的何处中断? 并且,如果JS中没有线程,是否需要在JS中使用互斥锁? 具体来说,我想知道如何使用功能由所谓的影响setTimeout()和XmlHttpRequest的onreadystatechange对全局访问的变量。

4
PTHREAD_MUTEX_INITIALIZER与pthread_mutex_init(&mutex,param)
之间有什么区别 pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 要么 pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); 如果仅使用第一种方法,我是否足够安全? 注意:我的问题主要涉及非常小的程序,在这些程序中,我最多要做的是将多个客户端连接到服务器,并使用辅助线程解决其查询。
89 c  ubuntu  pthreads  mutex 


3
调用pthread_cond_signal而不锁定互斥锁
我读到某个地方,我们应该在调用pthread_cond_signal之前锁定互斥锁,并在调用它之后解锁mutext: pthread_cond_signal()例程用于发信号(或唤醒)另一个正在等待条件变量的线程。它应该在互斥锁锁定后调用,并且必须解锁互斥锁才能完成pthread_cond_wait()例程。 我的问题是:在不锁定互斥锁的情况下调用pthread_cond_signal或pthread_cond_broadcast方法是否可以?

4
在Python中正确使用互斥锁
我从python中的多线程开始(或者至少我的脚本有可能创建多个线程)。该算法是否是Mutex的正确用法?我尚未测试此代码,它可能甚至无法正常工作。我只希望processData在一个线程中运行(一次一个),而主while循环保持运行,即使队列中有一个线程也是如此。 from threading import Thread from win32event import CreateMutex mutex = CreateMutex(None, False, "My Crazy Mutex") while(1) t = Thread(target=self.processData, args=(some_data,)) t.start() mutex.lock() def processData(self, data) while(1) if mutex.test() == False: do some stuff break 编辑:重新阅读我的代码,我可以看到它是完全错误的。但是,这就是为什么我在这里寻求帮助。

2
Python多处理安全地写入文件
我正在尝试解决一个涉及许多子问题的大数值问题,并且我正在使用Python的多处理模块(特别是Pool.map)将不同的独立子问题分解为不同的核心。每个子问题都涉及计算大量子问题,并且我试图通过将结果存储到文件中(如果尚未通过任何过程对其进行计算)来有效地记住这些结果,否则请跳过计算并仅从文件中读取结果。 我的文件存在并发问题:有时,不同的过程会检查以查看是否已经计算了子子问题(通过查找将结果存储在文件中),没有找到子子问题,运行计算,然后尝试同时将结果写入同一文件。如何避免这样写冲突?


2
C ++ 11:为什么std :: condition_variable使用std :: unique_lock?
std::unique_lock与一起工作时的角色使我有些困惑std::condition_variable。据我了解的文档,std::unique_lock它基本上是一个ated肿的锁卫士,可以在两个锁之间交换状态。 到目前为止,我已经pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)为此目的使用过(我猜这就是STL在posix上使用的功能)。它需要一个互斥锁,而不是锁。 这有什么区别?是std::condition_variable处理std::unique_lock优化的事实吗?如果是这样,它到底有多快?



4
是否可以确定持有互斥锁的线程?
首先,我使用pthread库编写多线程C程序。线程总是被等待的互斥锁挂起。当我使用strace实用程序查找线程处于FUTEX_WAIT状态时,我想知道当时哪个线程持有该互斥量。但是我不知道该怎么做。有没有公​​用事业可以做到这一点? 有人告诉我Java虚拟机支持此功能,因此我想知道Linux是否支持此功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.