mutex相关内容

使用字符串作为锁做线程同步

在查看一些遗留应用程序代码时,我注意到它使用字符串对象进行线程同步.我正在尝试解决该程序中的一些线程争用问题,并且想知道这是否会导致一些奇怪的情况.有什么想法吗 ? 私有静态字符串 mutex= "ABC";内部静态 void Foo(Rpc rpc){锁(互斥锁){//做一点事}} 解决方案 这样的字符串(来自代码)可能是“实习".这意味着“ABC"的所有实例都指向同一个对象.即使跨 Ap ..
发布时间:2022-01-22 19:51:09 C#/.NET

C# 中各种线程同步选项有什么区别?

谁能解释一下两者的区别: 锁定(某个对象){} 使用互斥锁 使用信号量 使用监视器 使用其他 .Net 同步类 我就是想不通.在我看来,前两个是一样的? 解决方案 好问题.我可能错了..让我试试..我的原始答案的修订版#2..有了更多的理解.感谢您让我阅读:) 锁(obj) 是一个用于(对象内?)线程同步的 CLR 构造.确保只有一个线程可以获取对象的锁的所 ..
发布时间:2022-01-22 19:49:23 C#/.NET

我们什么时候应该使用互斥锁,什么时候应该使用信号量

什么时候应该使用互斥体,什么时候应该使用信号量? 解决方案 这是我记得什么时候使用什么 - 信号量:当您(线程)想要睡觉时使用信号量,直到其他线程告诉您醒来.信号量“向下"发生在一个线程(生产者)中,信号量“向上"(对于相同的信号量)发生在另一个线程(消费者)中例如:在生产者-消费者问题中,生产者想要休眠直到至少一个缓冲槽为空——只有消费者线程才能知道缓冲槽何时为空. 互斥:当 ..
发布时间:2022-01-22 19:46:55 服务器开发

使用条件变量优于互斥锁的优点

我想知道在 pthread 中使用条件变量而不是互斥锁有什么性能优势. 我发现:“没有条件变量,程序员需要让线程不断轮询(可能在关键部分),以检查是否满足条件.这可能非常消耗资源,因为线程会连续忙于这项活动.条件变量是一种无需轮询即可实现相同目标的方法.(https://computing.llnl.gov/tutorials/pthreads) 但似乎互斥锁调用也是阻塞的(与自旋锁不 ..

VB6:跨所有用户会话的单实例应用程序

我有一个应用程序需要是跨 Windows PC 上所有用户会话的单实例应用程序.到目前为止,我的研究主要集中在使用互斥锁来完成此任务,但我遇到了一个我不确定是否真的是问题的问题,我认为这确实是一个最佳实践问题. 首先是代码: Private Const AppVer = "Global\UNIQUENAME" ' 这不是我使用的,但名称是唯一的公共子主()调暗互斥值只要mutexValue ..
发布时间:2022-01-20 19:28:17 其他开发

在多线程 C++ 应用程序中,我是否需要互斥锁来保护简单的布尔值?

我有一个多线程 C++ 应用程序,它使用 OpenSceneGraph 库进行 3D 渲染.我计划使用 boost::threads 将 OSG 的渲染循环作为一个单独的线程启动,将包含共享状态的数据结构传递给线程.我试图避免任何过于重量级的东西(如互斥锁)进行同步,因为渲染循环需要非常紧凑,而 OSG 本身试图避免不得不锁定.大多数共享状态是在线程启动之前设置的,并且永远不会改变.我确实有一些需 ..
发布时间:2022-01-19 17:28:11 C/C++开发

互斥锁的存在是否有助于摆脱 volatile 关键字?

我有一个多 R/W 锁类,它保持读、写和挂起的读、挂起的写计数器.互斥体保护它们免受多个线程的影响. 我的问题是我们是否还需要将计数器声明为 volatile,以便编译器在进行优化时不会搞砸. 或者编译器是否考虑到计数器由互斥锁保护. 我了解互斥锁是一种用于同步的运行时机制,而“volatile"关键字是编译时指示编译器在进行优化时做正确的事情. 问候,-杰. 解决方 ..
发布时间:2022-01-17 08:36:55 C/C++开发

什么是“属性"?pthread 互斥锁?

函数 pthread_mutex_init 允许您指定指向属性的指针.但是我还没有找到关于 pthread 属性是什么的一个很好的解释.我一直只提供NULL.这个论点有用吗? 文档,给那些忘记它的人: PTHREAD_MUTEX_INIT(3) BSD 库功能手册 PTHREAD_MUTEX_INIT(3) 名字pthread_mutex_init -- 创建一个互斥体 ..
发布时间:2022-01-13 18:06:25 其他开发

Python多处理安全地写入文件

我正在尝试解决一个涉及大量子问题的大数值问题,并且我正在使用 Python 的多处理模块(特别是 Pool.map)将不同的独立子问题拆分到不同的核心上.每个子问题都涉及计算大量子子问题,如果尚未由任何进程计算它们,我试图通过将它们存储到文件中来有效地记忆这些结果,否则跳过计算并从文件中读取结果. 我遇到了文件的并发问题:不同的进程有时会检查是否已经计算了子子问题(通过查找将存储结果的文件) ..
发布时间:2022-01-12 12:07:53 Python

监视器与互斥体

我读到 mutex 是一个值为 1 的信号量(二进制信号量),用于强制互斥. 我读了这个链接信号量与监视器 - 有什么区别?这表示监视器有助于实现互斥. 谁能告诉我互斥锁和监视器之间的区别,因为它们都有助于实现相同的目标(互斥)? 解决方案 由于你没有具体说明你说的是哪个操作系统或语言/库,所以让我笼统地回答一下. 从概念上讲,它们是相同的.但通常它们的实现方式略有不同 ..
发布时间:2022-01-11 23:18:17 其他开发

死锁的解决方案:锁排序

在以下代码中,如果两个线程同时调用 transaction() 函数,转置不同的帐户,则可能出现死锁. 无效交易(Account from, Account to, double amount){互斥锁1,锁2;lock1 = getlock(从);lock2 = getlock(to);获取(锁定1);获取(锁定2);取款(从,金额);存款(至,金额);释放(锁2);释放(锁1);} 也就是 ..
发布时间:2022-01-11 23:15:23 其他开发

Android NDK 互斥锁

我正在尝试使用 Android 本机开发工具包进行一些多线程处理,因此我需要 C++ 端的互斥锁. 在 Android NDK 中创建和使用互斥锁的正确方法是什么? 解决方案 NDK 似乎支持 pthread 互斥体.我自己没用过. ..
发布时间:2022-01-10 23:46:19 移动开发

与 win32 CRITICAL_SECTION 相比的 std::mutex 性能

std::mutex 的性能与 CRITICAL_SECTION 相比如何?是一样的吗? 我需要轻量级同步对象(不需要是进程间对象)是否有任何 STL 类接近 CRITICAL_SECTION 除了 std::mutex ? 解决方案 请看我在答案末尾的更新,自 Visual Studio 2015 以来情况发生了巨大变化.原始答案如下. 我做了一个非常简单的测试,根据我的测量 ..
发布时间:2022-01-07 11:18:44 C/C++开发

Python 多处理安全地写入文件

我正在尝试解决一个涉及大量子问题的大型数值问题,并且我正在使用 Python 的多处理模块(特别是 Pool.map)将不同的独立子问题拆分到不同的核心上.每个子问题都涉及计算许多子子问题,如果它们尚未被任何进程计算过,我试图通过将它们存储到文件中来有效地记住这些结果,否则跳过计算并只从文件中读取结果. 我遇到了文件的并发问题:不同的进程有时会检查是否已经计算了子问题(通过查找将存储结果的文 ..
发布时间:2022-01-04 08:02:57 Python

线程的并行合并排序/比 Seq 慢很多/.合并排序.帮助

http://pastebin.com/YMS4ehRj ^ 这是我对并行归并排序的实现.基本上我所做的是,对于每个拆分,前半部分由一个线程处理,而后半部分是顺序的(即)说我们有一个包含 9 个元素的数组,[0..4] 由线程 1,[0..1] 由线程 2 处理,[5..6] 由线程 3 处理(请查看源代码以进行澄清). 其他一切都保持不变,比如合并.但问题是,这比归并排序慢得多,甚至 ..
发布时间:2021-12-30 21:40:47 其他开发

如何从 Windows Phone 上的前台应用程序发出 ScheduledTask 信号?

我正在创建一个应用程序,它有一个前台应用程序(当然)以及一个 PeriodicTask 和一个 ResourceIntensiveTask. 如果用户在运行时启动应用程序,我需要一种关闭计划任务的方法. 我看不出有任何方法可以使用系统范围的互斥体来做到这一点.理想情况下,当后台任务开始时,会分出一个线程来监听来自前台应用程序的信号,如果它收到这个信号,它可以干净地关闭后台任务. ..
发布时间:2021-12-30 12:16:10 其他开发

互斥锁是如何实现的?

对于特定应用程序,某些实现是否比其他实现更好?推出自己的产品有什么好处吗? 解决方案 查看Test-and-set 机器指令,暗示了如何在机器级别实现原子操作.我可以想象大多数语言级别的互斥锁实现都依赖于机器级别的支持,例如 Test-and-set. ..
发布时间:2021-12-28 22:43:32 其他开发

Java 中的互斥量和信号量是什么?主要区别是什么?

Java 中的互斥量和信号量是什么?主要区别是什么? 解决方案 信号量可以计数,而互斥量只能计数到1. 假设您有一个线程正在运行,它接受客户端连接.该线程可以同时处理 10 个客户端.然后每个新客户端设置信号量直到达到 10.当信号量有 10 个标志时,您的线程将不会接受新连接 互斥锁通常用于保护东西.假设您的 10 个客户端可以访问系统的多个部分.然后,您可以使用互斥锁保护系 ..
发布时间:2021-12-28 22:34:29 Java开发

Java中有互斥锁吗?

java 中是否有互斥对象或创建一个对象的方法?我问是因为用 1 个许可初始化的信号量对象对我没有帮助.想想这个案例: 尝试{semaphore.acquire();//做东西semaphore.release();} 捕获(异常 e){semaphore.release();} 如果第一次acquire发生异常,catch块中的释放会增加许可,信号量就不再是二元信号量了. 正确的方法是 ..