mutex相关内容

如何装箱Arc和Mutexed变量?

以下代码在闭包中获取一些变量,并返回包含该数据的结构. 即使我对结构进行装箱并克隆变量,我也无法返回带有该数据的结构;他们不可能超出这个范围.我曾考虑过使用回调闭包,但是我真的不想这么做.有没有办法在没有回调的情况下将其删除? pub fn get(addr: &str) -> std::io::Result> { use std::sync::{A ..
发布时间:2020-05-14 01:57:05 其他开发

在wait()/signal()块中获取互斥锁会怎样?

因此,练习的描述是: 您在这家餐厅里有N分,您可以在那里索要一份炸薯条.每个点有M个部分.这里有1个frycheff.当订购点有2份时,它会警告厨师需要重新装填. Cheff按FIFO的顺序交付这些部分. 我们做了这个伪代码: init { Semafoor[] mutex; Condition[] cond_point = new Condition[N]; ..

等到上一个流程实例完成

我是Linux C编程世界的新手,请耐心等待.找到了一些有关使用互斥量和信号量但与我的情况不完全匹配的进程间同步(同一进程但实例不同)的线程.我尝试关注它们并尝试创建一些示例,但是没有一个对我有用. 最后在此处发布以获取帮助. 我正在努力创建一个将通过以太网telnet会话执行的实用程序.如下面USAGE注释中所述,第一次调用将传递命令行参数-init,它将启动始终运行的线程.在-in ..
发布时间:2020-05-14 01:48:37 其他开发

如何使用等待和通知在线程之间进行通信?

我有2个线程在同一函数中运行.我想稍后在代码中编辑数据结构,但我想确保两个线程都已读取数据,并且这些线程不会读取dict_list和ans_list中的任何将来更改.我当时正在考虑在mutex.acquire()之前使用诸如wait()和notify()之类的命令,但是由于两个线程都使用相同的功能,因此第二个线程将不得不等待永远不会到来的通知. 我该如何解决这个问题? def foo ..
发布时间:2020-05-14 01:37:00 Python

是"benaphores"值得在现代OS上实施?

回到我作为BeOS程序员的那一天,我读了我认为这很聪明,而且似乎可以在支持原子增量/减量的任何平台上做同样的事情. 另一方面,这看起来很容易包含在标准互斥量实现本身中……在这种情况下,在我的程序中实现此逻辑将是多余的,不会带来任何好处. 有人知道现代的锁定API(例如pthread_mutex_lock()/pthread_mutex_unlock())是否在内部使用此技巧吗?如果没有 ..
发布时间:2020-05-14 01:24:30 其他开发

互斥锁-可以通过合并来建立集的地方

从此处: https://stackoverflow.com/a/5524120/462608 如果要从一组此类互斥对象中锁定几个互斥保护的对象 对象,可以通过合并构建集的地方,您可以 选择为每个对象仅使用一个互斥锁,从而允许更多线程 并行工作, 或对每个对象使用对任何可能共享的递归的引用 互斥锁,以降低无法锁定所有互斥锁的可能性 或对每个对象使用与任何可能共享的可比较引用 ..
发布时间:2020-05-14 01:22:12 其他开发

在作用域锁定之前检查可选的互斥锁

我有一个构造函数,可以选择允许用户将ponter传递给Boost互斥体.如果没有提供互斥锁,则成员指针pMyMutex设置为NULL.用户可以根据需要选择应用一些线程安全性.但是,出于明显的原因,我不能在这种检查中使用scoped_lock: if (pMyMutex != NULL) const boost::mutex::scoped_lock l(*pMyMutex); // ..
发布时间:2020-05-14 01:21:57 C/C++开发

使用易失性变量和信号量-Java

我从线程,信号量,易失性变量等开始. 我想知道是否在使用信号量时是否有必要将变量定义为volatile,我的意思是: 例如,具有2个线程,一个增加,另一个减少变量,显然,在每次访问之前,我都有一个互斥量,该互斥量可以随时控制只有一个线程在使用该变量. 是否有必要将其定义为易失性? 解决方案 来自 内存一致性影响:在调用a之前在线程中执行的操作 “释放"方法,例如release ..
发布时间:2020-05-14 01:19:23 Java开发

互斥线程锁定,在Python中互斥锁/锁定释放后会删除排队的函数?

这是我遇到的问题:我正在使用Python 2.7,并且我有一个在线程中运行的代码,该代码具有一个关键区域,当时只能执行一个线程.该代码当前没有互斥机制,因此我想查询特定用途的情况,其中涉及“删除"“排队"功能.我尝试使用以下最少的工作示例来模拟这种行为: useThreading=False # True if useThreading: from threading import Th ..
发布时间:2020-05-14 01:17:02 Python

最大限度地提高工作线程利用率

为了解决问题(以及更好的理解多任务),我编写了一个小线程池实现.该线程池启动了许多工作线程,这些工作线程在线程池的客户端添加任务时将这些任务从队列中弹出.出于这个问题的目的,当任务队列为空时,工作线程全部终止. 进行一些基本的基准测试后,我发现该应用程序花费约60%的时间等待获取队列锁.大概这主要是在工作线程中发生的. 这仅仅是指示我没有给工作线程足够的工作量,还是更多?我可能缺少增加 ..

Mutex和Condvar在Rust中的缓冲区

我正在尝试用一个使用者和一个生产者实现一个缓冲区.我只使用了POSIX信号量,但是,Rust中不提供它们,我正在尝试用Rust同步基元(Mutex,Condvar,Barrier,...)实现一个普通的信号量问题,但是我不想使用频道. 我的代码表现得太不规则了,在某些情况下运行得很好,而在其他情况下,它只是停止在某个数字上,而在其他情况下,它只是没有开始计数. 如果我在主线程中等待1秒 ..
发布时间:2020-05-14 01:05:55 其他开发

释放在WPF Application.OnStartUp()中创建的命名互斥体:哪个线程拥有它?

我在WPF应用程序的OnStartup方法内创建一个互斥锁.互斥锁不在程序中的其他任何地方使用,其唯一目的是防止某些程序同时运行.当应用程序关闭时,如何释放此互斥锁? 根据 documentation ,mutex.ReleaseMutex()必须从创建互斥锁的同一线程中调用.但是,这带来了一个问题,因为我不控制调用OnStartup()的线程. 假设我的OnStartup方法看起来像 ..
发布时间:2020-05-14 01:02:59 C#/.NET

共享互斥量的交替例程

我有方法a,该方法在某个随机时间重复调用,从而触发方法b,该方法在某个随机时间之后完全执行,并且在它自己的线程中.我想确保a的后续执行一直等到b完成,这由a的当前执行触发.换句话说,a和b要交替执行.我尝试使用互斥量和条件变量来执行此操作,如下所示: def a Thread.new do $mutex.synchronize do puts "a" b ..
发布时间:2020-05-14 00:58:13 其他开发

thrd_busy和mtx_lock()/mtx_timedlock()

关于C1x互斥体(第7.25.4节),我有以下问题: 在哪些情况下mtx_lock()可以返回thrd_busy而不是阻止? mtx_timedlock()在什么情况下可以返回thrd_busy? 请注意,thrd_busy在§7.25.1¶5中定义为"当测试和返回功能所请求的资源已在使用中". 我希望使用mtx_try或mtx_try | mtx_recursive互斥锁调用时 ..
发布时间:2020-05-14 00:34:04 其他开发

C ++ 14 shared_timed_mutex与VS C ++ 11互斥锁

我在8个线程(我有一个8核PC)之间有一个共享的哈希表,每个线程都在哈希表中读写. 在示例1中,我使用了经典的互斥锁,并且所有8个内核都处于100% 在示例2中,我使用了shared_timed_mutex,因为可以在竞争中进行读取访问,但是所有8个核心的访问量均为40% 问题出在哪里? example 1: mutex mutex_hash; -- thread -- mut ..
发布时间:2020-05-14 00:27:58 C/C++开发

带线程的C/C ++数组-我需要使用互斥锁或锁吗?

我是使用线程的新手,并且已经阅读了很多有关如何共享数据和保护数据的知识.但是我还没有真正了解何时需要使用互斥锁和锁来保护数据. 以下是我将要解决的问题的描述.需要注意的重要一点是,这将是时间紧迫的,因此我需要尽可能减少开销. 我有两个固定大小的双精度数组. 第一个数组将为后续计算提供数据. 线程将从中读取值,但永远不会对其进行修改.一个 元素可能会在任何时候被任何线程读取. ..
发布时间:2020-05-14 00:23:00 C/C++开发