concurrency 相关问题

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

c++使用信号量的并发问题:按顺序打印

作为 C++ 并发练习,我想使用信号量按顺序打印字母 A B C。这是我的代码: 二进制信号量 sem[] = { 二进制信号量(1), 二进制信号量(0), 二进制信号量(0...

回答 1 投票 0

GRPC Java MAX_CONCURRENT_STREAMS 与 maxConcurrentCallsPerConnection

我试图理解 MAX_CONCURRENT_STREAMS 和 maxConcurrentCallsPerConnection 之间的区别。我读到大多数服务器将 MAX_CONCURRENT_STREAMS 设置为默认值 100,而

回答 1 投票 0

传递不可发送类型的参数“(任何 URLSessionTaskDelegate)?”在主要参与者隔离的上下文之外可能会引入数据竞争

我正在使用 SwiftUI,并将 View 声明为 @MainActor 来解决一些并发警告。但是,我仍然收到警告 传递不可发送类型的参数'(任何 URLSessionTaskDele...

回答 1 投票 0

Go 通道有时收不到最后一个值

我目前正在学习Go Channel,我正在尝试这段代码。它创建 10 个 goroutine,每个 goroutine 向一个通道发送 1000 个 1。然后另一个 go 例程接收它并将其添加到 cou...

回答 1 投票 0

使用 AtomicInteger 作为 List 的计数器 [已关闭]

我正在学习多线程。我有下面的代码,它在 CopyOnWriteArrayList 上实现循环算法。列表始终具有固定数量的元素,假设为 10。 原子输入...

回答 1 投票 0

Java CopyOnWriteArrayList 添加元素(如果不存在)

我有一个 CopyOnWriteArrayList 因为我的代码应该是线程安全的。 列表 friuts = new CopyOnWriteArrayList<>(); 我不想在列表中有重复的水果,我不能使用 Set,因为我想要

回答 1 投票 0

在sync.Map中LoadOrStore,无需每次创建新结构

是否可以将LoadOrStore放入Gosync.Map中,而无需每次都创建新的结构?如果没有,有哪些替代方案? 这里的用例是如果我使用sync.Map作为缓存,其中

回答 4 投票 0

如何将 `VNDocumentCameraViewControllerDelegate` 转换为 Swift 6 并发

所以我有这个代码: fileprivate 类 DocumentScanDelegate: NSObject, VNDocumentCameraViewControllerDelegate { 静态让共享 = DocumentScanDelegate() var 压缩质量:CGFloat = ...

回答 1 投票 0

ProgressView 在 SwiftUI 中数据解析期间未更新

很难重现完整的代码,但我会尽力清楚地解释这个问题。 我正在尝试显示进度条视图以显示解析在线下载的一些数据的状态。我的功能...

回答 1 投票 0

通过 tcp 连接在 golang 中并行请求来自对等方的块

我正在用 Go 构建一个 P2P 文件传输系统,它可以并行地从对等点获取数据块。虽然顺序请求工作正常,但使用 goroutine 的并行请求表现不一致,结果...

回答 1 投票 0

Django ORM 模型“保存”方法和竞争条件/ACID 隔离

如果我们检查以下代码: 类 SomeModel(models.Model): ... def save(self, *args, **kwargs): self.validate_unique() 超级().保存() def validate_unique(self, *a...

回答 1 投票 0

java与concurrenthashmap同步失败

我需要生成一个唯一的编号,目前的逻辑是: 有一个表tableA,其中包括列id(pk),code(varchar,unique)和codeValue(int)。 当生成唯一编号时,sy...

回答 1 投票 0

管理每个订阅的并发用户

我正在实现一项功能,用户可以进行一个订阅,并且**每个订阅最多可以创建 10 个帐户,但只允许 3 个并发用户**。 我正在使用 sta...

回答 1 投票 0

为什么使用信号量解决方案会合不能泛化(我们使用屏障代替)?

对于集合点问题,我们需要同步两个线程,这是一个经典的解决方案: a到达 = S(0); b到达= S(0); 线程A: 而(真){ 做一点事(); aArrived.signal(); 巴...

回答 2 投票 0

多线程程序未按预期运行

我试图了解信号量,阅读 Allen B. Downey 的《信号量小书》。 其中有一个谜题: 概括交会解。每个线程都应该运行 关注...

回答 1 投票 0

这个ThreadPool实现正确吗?

我是并发编码新手,并尝试自己实现简单的ThreadPool。我在学习网站(jenkov.com)上找到了这个实现,它似乎运行良好。 不过,我认为...

回答 1 投票 0

使 C++ 类成为监视器(并发意义上)

我想确保一次只有一个线程可以运行我的 C++ 类的方法。换句话说,让类表现得像一个监视器。 有没有一种模式、模板化方法来做到这一点,或者一些Boost

回答 2 投票 0

使系统类型符合具有“@MainActor”隔离的协议,同时禁用并发检查会产生意外错误

我有以下运行良好的代码: 协议 URLLauncher { func open(_ url:URL,选项:[UIApplication.OpenExternalURLOptionsKey:Any],completionHandler:((Bool)-> Void)?) } 延伸...

回答 1 投票 0

Intel TBB 双精度并发向量是否无锁?

我正在 Intel Broadwell XEON 或 AMD EPYC 7551、Intel TBB 和 Pagmo2 库上使用 GCC C++20 编写 C++ 多线程代码以解决优化问题。如果我声明并发向量 我正在 Intel Broadwell XEON 或 AMD EPYC 7551、Intel TBB 和 Pagmo2 库上使用 GCC C++20 编写 C++ 多线程代码,以解决优化问题。如果我声明 concurrent_vector<double> X 并且 X 的元素被多个正在运行的线程同时修改,我相信这些操作将是线程安全的。如果我错了,请纠正我。 我真正的问题是:如果多个线程访问 X 的元素,即多个线程尝试同时修改 X 的元素,例如X.at(5),该操作是原子的且无锁的,还是会存在对性能产生重大影响的锁?另外,假设线程 0 修改 X.at(i),而线程 1 同时使用 X.at(j) 修改 i != j。对性能有何影响?该操作是否是无锁的,即原子操作? 我是并发 C++/TBB 新手,无法使用 Google 搜索找到明确、清晰的答案。 我已经搜索了Google和TBB文档,但还没有找到上述问题的明确答案。我不确定 TBB 并发容器是否真的是原子的? ...该操作是否是无锁的,即原子操作? 不会有锁,但这并不意味着它的行为像std::atomic concurrent_vector 允许多个线程访问(读、写、取 相同元素的地址)。它不会序列化访问, 因此这些访问是否安全取决于数据类型。 会对性能产生什么影响... tbb::concurrent_vector 通过不移动现有的来解决这个问题 调整大小时的存储。相反,为了成长,它创造了一个新的 存储块。通过快速恒定时间访问块 索引方案。请参阅 tbb/concurrent_vector.h 了解其具体情况 已实施。 然而,天下没有免费的午餐。并发向量索引 与 std::vector 相比,引入了额外的复杂性。因此,如果 我建议您不需要同时增长和访问向量 使用 std::向量。但是如果你确实有多个线程附加到一个 动态增长的数组,那么并发向量可能是一个很好的选择。 由于实现的原因,访问元素的性能成本是不可忽略的,这是支持同时增长和访问向量的用例所必需的。 注:引用自 https://community.intel.com/t5/Intel-oneAPI-Threading-Building/concurrent-vector-thread-safety/m-p/912060,以获取可能的英特尔员工的答案(因为他们的用户名包含_INTEL)。

回答 1 投票 0

防止退出/死亡测试

我正在使用 googletest 来使用 std::thread 测试多线程代码。在损坏的代码中,经常会发生 std::thread 在线程加入之前被销毁,从而导致程序终止。

回答 1 投票 0

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