concurrency 相关问题

在计算机科学中,并发性是系统的属性,其中可以在重叠的时间段中执行多个计算。计算可以在同一芯片中的多个核上执行,在同一处理器上抢占时间共享线程,或者在物理上分离的处理器上执行。

如何让可运行实例在一个线程中等待并由其他线程通知?

在下面的代码中,一个可运行实例正在等待获取通知。如何通过其他线程通知该线程我应该使用方法或另一个包含要通知的线程的类..我被卡住了...

回答 3 投票 0

忽视 Jetpack Compose Effect Handlers 的使用:可能的后果?

当前正在阅读有关 Jetpack Compose 副作用和效果处理程序的内容:Android 文档 我不清楚的是:当我不使用所描述的效果处理程序时会发生什么(Laun...

回答 1 投票 0

在 Swift 5.5+ 中的后台线程上使用 JSONDecoder

以下 URL 会话是异步执行的。但是 JSON 解码步骤呢?这是发生在主线程上吗? func fetchFavorites() 异步抛出 -> [Int] { 让 url = 网址(

回答 2 投票 0

什么是自组织锁

什么是自组锁 同步(对象){ 临界区 } 我知道这会获取 obj 的内在锁。 公共无效转账(int from,int to,int amount){ 同步(l...

回答 1 投票 0

从 shell 同时播放多个音频文件的强大方法?

我正在尝试通过多个并发 shell 脚本在 Mac (OS X 10.10.5) 上播放音频文件。每个脚本在单独的终端会话中运行,并定期调用 sox 的实例...

回答 3 投票 0

寻求模式来解决领域驱动设计环境中的并发更新挑战

我们的开发团队目前正在探索有效的模式来处理并发更新可能导致数据不一致的情况。我们坚持领域驱动设计 (DDD) 原则,

回答 1 投票 0

如何处理无锁数据结构的原子更改?

下面的代码需要处理地图的大小并根据总大小进行旋转。 问题出在并发调用中。我无法避免写入比我预期更多的数据。我想要...

回答 1 投票 0

C++:一个关于memory_order_relaxed的问题

我正在比较 Anthony Williams 的《C++ Concurrency in Action》一书和本次演讲。 我发现后者的一些内容与前者的解释不符,我想问一下如何来......

回答 2 投票 0

Swift 并发:推迟任务直到加载某些数据

我已经使用 Swift Concurrency 2 年了,但不知道如何解决这种情况。 在名为 APIManager 的类中,有一个执行网络调用的执行方法。 当...

回答 1 投票 0

如何降低Postgres数据库的一致性,以加快索引较多的表的更新速度

我有一个 Postgres 表,其中包含大量索引列(总共大约 100 列)。任何行更新都会导致所有索引被更新,这对于数据库引擎来说是大量的工作。 我认为基于

回答 1 投票 0

在并发编程中,通过使用锁,程序有时可能会使用超出必要数量的处理器?

这是一道考试题(模拟考试,不是真正的考试)。这是关于使用多核处理器的并发编程以及使用锁的问题。 在并发编程中可能吗

回答 2 投票 0

对本地对象的静态初始化进行call_once

我已经解决了关于何时使用 call_once 的问题以及关于静态初始化的线程安全性的问题。看来,如果本地可调用对象是静态初始化的,那么它的服务非常好......

回答 1 投票 0

使用 HttpClient 并发调用 API 时执行中途终止

我在使用 HttpClient 从同一服务器托管的另一个 Web 服务调用 Web 服务时遇到问题。 场景是,有一个 REST webService,让我们说“WebService1”,该服务...

回答 2 投票 0

是否可以阻止 Erlang 进程传递消息?

在 Erlang 中模拟同步通信有一个非常常见的技巧: %% 处理“发送者” 参考 = make_ref(), '接收者' ! {自我(),参考,消息}, 接收 {ack, Ref} -> 确定结束, ... %% P...

回答 1 投票 0

你能监听缓存一致性流量来实现链接加载和条件存储吗?

我有点想为 x86-64 实现一种 LL/SC 形式(最有可能是 Saphire/Emerald Rapids)。看来缓存拥有执行此操作所需的所有信息,但我需要知道缓存行何时

回答 1 投票 0

更简单的 Golang 并发模式

我一直在尝试创建一个函数,使多个外部 api 调用并发,并牢记以下内容 返回遇到的第一个错误 聚合 api 调用的结果 这是我的

回答 1 投票 0

从RwLock访问T<Vec<RwLock<T>>>

我有一个应该在多个线程中传递的结构。它的结构如下: pub 结构状态{ 人类:RwLock>, 动物:RwLock 我有一个应该在多个线程中传递的结构。其结构如下: pub struct State{ humans: RwLock<Vec<RwLock<Human>>, animals: RwLock<Vec<RwLock<Animal>> } 这个想法是,如果线程只写入单个 Vec 元素,则不会锁定整个 Vec,而是只能读取相应的元素和所有其他元素。另一方面,当从 Vec 插入/删除时,它肯定会被完全锁定。 现在我还有一个函数,它返回一个特定的Human。为简单起见,它始终返回 N^2 元素。 impl State{ pub fn get_some_element(&self, N: usize) -> &Human{ // here i am a bit lost, because I run into temporary variables that cannot be passed, when unwrapping the LockGuards. } } 我的一个想法是使用tokio::sync::RwLockReadGuard::map: let humans = self.humans.read().await; RwLockReadGuard::map(humans, |f|{ &f.get(N^2) } 由于临时变量的存在,甚至无法返回(因此 LockGuard 到相应的元素)。 您能在这里帮助我并就如何有效解决该问题提供一些建议吗?谢谢你。 您无法从锁中获得简单的参考。即使在嵌套锁情况之外,这也不起作用: fn read_lock(lock: &std::sync::RwLock<i32>) -> &i32 { lock.read().unwrap() } 原因是read().unwrap()给你一个RwLockReadGuard。它看起来有点像共享引用,但事实并非如此。特别是,它是一个具有自己的析构函数的结构,该析构函数在执行时会释放锁。您无法通过 Rust 中的简单引用获得这种过期后行为。 另外,只是为了强调这一点:嵌套锁在这里没有什么区别。仍然必须执行“一些”代码来负责释放“每个”锁。只要看一下签名,我们就应该在返回类型中看到 RwLockReadGuard<RwLockReadGuard<Human>> 形式的内容。不幸的是,这似乎无法直接实现。 stdlib RwLock 没有任何 map 函数,并且 tokio 仅当您可以将内部内容作为简单引用获取时才有用,而不是作为受锁保护保护的另一件事(并且 async 也有点碍事)。因此,在这一点上,我建议要么将返回类型更改为泄漏更多数据结构的类型(例如返回锁而不是对内容的引用),如评论中所建议的;或者更改接口以使用闭包来处理获取的引用(类似于 with 上的 RefCell 方法及类似方法):fn with_element<F: FnOnce<&Human>>(&self, n: usize, f: F) { ... }

回答 1 投票 0

在Erlang中,发送到self是原子的吗?

据我所知,Erlang 进程总是会在其邮箱中接收第一条[到达]的消息,这些消息是与模式匹配的。我很好奇是否可以用它来获得以下假设:...

回答 1 投票 0

什么时候应该在通道上使用互斥锁?

在过去的几周里,我一直在努力解决一个(不太)简单的问题: 什么时候最好使用sync.Mutex,相反,什么时候最好使用chan? 看来问题也不少

回答 2 投票 0

AtomicReference<ArrayList>困难和替代方案

所以在我写的各种好玩的程序中,我都遇到过并发修改异常。 在我天真的尝试解决这个问题时,我使用了 Atomic 而不是某种

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.