concurrency 相关问题

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

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

嵌套CopyOnWriteArrayList默认是线程安全的吗?

假设我有以下代码: 类A类{ 最终整数 i; 最终字符串; 最终 CopyOnWriteArrayList l; A 类() { ... } } 类 B 类 { 最后在...

回答 1 投票 0

消息驱动通道适配器 - 消息并发处理

问题 我们有一个具有以下消息驱动通道适配器配置的遗留应用程序 问题 我们有一个具有以下消息驱动通道适配器配置的旧应用程序 <jms:message-driven-channel-adapter id="processRequest" destination="requestFromLoader" connection-factory="connectionFactory" max-concurrent-consumers="30" message-converter="xmlMarshalConverter" channel="jmsInChannel" error-channel="errorChannel"/> 使用此配置max-concurrent-consumers =“30”我们预计有30个并行消费者(processRequest-container-1到30)来消费消息,但在测试过程中我们发现每个消费者依次消费10条消息,Eg - processRequest-container-1 处理消息 1 到 10,然后创建 processRequest-container-2 并处理 11 到 20 等等.. 如果只有 2 个请求,这会导致第二条消息等待,即使还有 29 个其他消费者。 分辨率 我们添加了 max-messages-per-task="1",这似乎产生了正确的结果,但我们仍在使用大量消息进行测试。 <jms:message-driven-channel-adapter id="processRequest" destination="requestFromLoader" connection-factory="connectionFactory" max-concurrent-consumers="30" max-messages-per-task="1" message-converter="xmlMarshalConverter" channel="jmsInChannel" error-channel="errorChannel"/> 问题 我们通知日志中的消费者名称(processRequest-container-1)将达到2000或3000(processRequest-container-2546),并且不限于processRequest-container-1到processRequest-container-30,但在第一种情况下,没有 max-messages-per-task="1" 它没有超出 processRequest-container-30,这正常吗?或者我们需要做些什么吗? 在spring文档中max-messages-per-task =“1”被定义为每条消息要执行的任务,什么是任务以及最大并行消费者如何受此影响? 添加 max-messages-per-task="1" 正确还是我们遗漏/忽略了其他内容? 任何建议或评论都很好。预先感谢。 这个问题更多的是关于 Spring JMS,而不是 Spring Integration。 最好阅读用于上述 DefaultMessageListenerContainer 的 <jms:message-driven-channel-adapter> 的源代码和 Javadoc。 有一条有趣的评论可能可以解释您的行为: /** * Specify the maximum number of concurrent consumers to create. Default is 1. * <p>If this setting is higher than "concurrentConsumers", the listener container * will dynamically schedule surplus consumers at runtime, provided that enough * incoming messages are encountered. Once the load goes down again, the number of * consumers will be reduced to the standard level ("concurrentConsumers") again. * <p>Raising the number of concurrent consumers is recommendable in order * to scale the consumption of messages coming in from a queue. However, * note that any ordering guarantees are lost once multiple consumers are * registered. In general, stick with 1 consumer for low-volume queues. * <p><b>Do not raise the number of concurrent consumers for a topic, * unless vendor-specific setup measures clearly allow for it.</b> * With regular setup, this would lead to concurrent consumption * of the same message, which is hardly ever desirable. * <p><b>This setting can be modified at runtime, for example through JMX.</b> * @see #setConcurrentConsumers */ public void setMaxConcurrentConsumers(int maxConcurrentConsumers) { 因此,由于您不使用 concurrent-consumers="30" 来代替,因此您获得最多 30 个动态实例,并且它们的 id 确实增加了,这是正常的。 如果不指定max-messages-per-task="1",逻辑是这样的: if (this.taskExecutor instanceof SchedulingTaskExecutor ste && ste.prefersShortLivedTasks()) { if (this.maxMessagesPerTask == Integer.MIN_VALUE) { // TaskExecutor indicated a preference for short-lived tasks. According to // setMaxMessagesPerTask javadoc, we'll use 10 message per task in this case // unless the user specified a custom value. this.maxMessagesPerTask = 10; } } 或者你的taskExecutor不是那个SchedulingTaskExecutor(这确实是默认情况下),因此你的所有消息都由同一个消费者实例处理。 一些文档也在这里:https://docs.spring.io/spring-framework/reference/integration/jms/using.html#jms-mdp

回答 1 投票 0

如何将 AdMob `GADFullScreenContentDelegate` 转换为 Swift 6 并发

这与如何将 `VNDocumentCameraViewControllerDelegate` 转换为 Swift 6 并发类似,但有一个警告是新的,因此可能需要不同的解决方案。 我有以下代码: @

回答 1 投票 0

NextJS API 端点中的 NextJS 服务器操作使用情况 - 并发与否?

正如我通过实践了解到的:NextJS 服务器操作是同步的。 我想实现并发;我喜欢将其抽象化的语法;因此我创建了一个 NextJS API 端点,它具有

回答 1 投票 0

具有并发任务(可以限制)的单实例WCF服务

我正在尝试构建一个 WCF 服务 - 是单实例 允许客户端向函数发出多个请求(例如 StartJob) StarJob(request) 将请求“排队”到 TaskFactory(一分钟...

回答 1 投票 0

不使用Thread或ExecutorService的Java并发

有一项任务交给我去做,我已尽力但无法完成。任务是编写一个 Java 程序,该程序将生成煎饼,同时......

回答 1 投票 0

在java中设置按钮单击的延迟?

我在 JFrame 中有一个保存按钮;单击保存时,“保存”文本设置为“保存...”;我需要在延迟 10 秒后将该文本设置为“已保存”。在 java 中这怎么可能? 请帮忙... t...

回答 4 投票 0

某些情况下会出现陈旧元素引用异常

我正在进行性能测试,以测量使用 Selenium 和 Java 和 TestNG 的航班搜索应用程序的供应商结果的响应时间。我已经利用了调用计数和线程

回答 1 投票 0

Lambda 预置并发显示 0 个可用。但我没用过

我使用我的 AWS 账户已经超过 4 个月了。现在,我需要创建一个具有预配置并发性的 Lambda 函数。但是,它给出了以下错误: ``允许的最大规定...

回答 1 投票 0

PHP:如何以非阻塞方式调用函数?

我看到了关于这个问题的其他几个问题,但没有明确的答案。 我有一个从 CLI 运行的 PHP 文件(必须是 PHP,不能是 cron 或其他东西),我必须多次调用相同的函数...

回答 3 投票 0

Go 中的性能:Mutex 与 RWMutex

Go 中有两种类型的互斥体:Mutex 和 RWMutex Mutex 提供 func Lock() 和 func Unlock()。 RWMutex 提供这些函数以及 func RLock() 和 func RUnlock()。 据我了解,我们...

回答 1 投票 0

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