concurrency 相关问题

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

Actor 符合具有异步函数要求的协议

我有一个具有同步功能要求的协议 类不可发送{} 协议 P1 { func doSomething(_ nonSendable: NonSendable) 异步 } 当我使用演员遵守此协议时,同时...

回答 1 投票 0

我在无锁的SPSC中发现了一个奇怪的现象

我尝试使用无锁技术实现 SPSC,但遇到了奇怪的分段错误。代码如下: #包括 #包括 #包括 #包括 我尝试使用无锁技术实现 SPSC,但遇到了奇怪的分段错误。代码如下: #include <iostream> #include <thread> #include <vector> #include <atomic> #define MATTER_NUM 10000 #define BUF_LEN 1024 uint64_t RingBuffer[BUF_LEN]; //uint32_t m_buffer[BUF_LEN]; std::atomic<uint64_t> head(0); std::atomic<uint64_t> tail(0); bool Push(const uint64_t &data) { uint64_t tmp_tail = tail.load(std::memory_order_relaxed); if ((tmp_tail + 1) % BUF_LEN == head.load(std::memory_order_acquire)) return false; RingBuffer[tmp_tail + 1] = data; tail.store((tmp_tail + 1) % BUF_LEN, std::memory_order_release); return true; } bool Pop(uint64_t &data) { static uint64_t cnt = 0; uint64_t tmp_head = head.load(std::memory_order_relaxed); if (tmp_head == tail.load(std::memory_order_acquire)) return false; data = RingBuffer[tmp_head]; head.store((tmp_head + 1) % BUF_LEN, std::memory_order_release); cnt = (tmp_head + 1) % BUF_LEN; return true; } int Producer() { for (int i = 0; i < MATTER_NUM; i++) { while (!Push(i)); } return 0; } int Consume() { for (int i = 0; i < MATTER_NUM; i++) { uint64_t data = -1; while (!Pop(data)); std::cout << data << std::endl; } return 0; } int main() { std::thread t1(Producer), t2(Consume); t1.join(); t2.join(); return 0; } 有一个奇怪的现象。当我取消第10行中的注释“uint32_t m_buffer[BUF_LEN]”时,代码神奇地正常运行!我不明白为什么会发生这种情况。 内置 g++ (GCC) 7.5.0: g++ -std=c++11 -pthread main.cpp && ./a.out RingBuffer[tmp_tail + 1] = data; - 不需要 %BUF_LEN 吗?看来您偶尔会出现缓冲区溢出的情况。

回答 1 投票 0

如何在 Swift 6 中表达流程管道的所有权释放

我有一个高度多线程的应用程序,可以在 Swift 5 中完美运行。我想切换到 Swift 6,并且我遇到了很少的错误,但仍然有这个错误,而且无法摆脱。 代码是

回答 1 投票 0

优化从支付网关获取交易状态的重试间隔

我有一个系统,其中交易最初在关系数据库中标记为“待处理”,如果支付网关未立即成功支付交易,我需要获取

回答 1 投票 0

在 React 应用程序中的多个输入文件上运行 ffmpeg (WASM/NodeJS)

我最近按照 Fireship.io 的教程制作了一个 React 应用程序,该应用程序使用户能够输入视频文件并将其转换为 gif。这是 GitHub Repo 的源代码。 使用的软件包...

回答 1 投票 0

并发循环执行失败

我正在尝试编写负载均衡器的内存中实现,该实现将有一个 get() 方法以循环模式返回实例,我需要它在并发环境中正确运行...

回答 1 投票 0

如何在 XCTest 中使用 Swift 中的异步任务测试 Interactor 方法?

我正在使用 VIP(Clean Swift)架构在 Swift 中开发一个应用程序。我有一个交互器,它有一个由 ViewController 的 viewDidLoad 触发的方法(也称为 viewDidLoad 以方便......

回答 1 投票 0

如何在我的 Jenkins 作业中使用 AWS s3 条件写入

我有一个 Jenkins 多分支管道,它将分支的状态存储在共享 S3 groovy 对象中。 Groovy 文件看起来像这样: [[“名称”:“def-123”,“当前状态...

回答 1 投票 0

ASP.NET Web api 中的并发请求处理

我有一个非常简单的 Web 应用程序,其中包含一些端点(获取、放置、删除)。 该应用程序的任务是从我的数据库中存储/返回/删除一些数据。 我想给pro添加并发...

回答 3 投票 0

等待模型任务中单击“查看”按钮

在我的 Swift 应用程序中,我有一个弹出窗口,请求用户做出是/否决定,如下所示: var yesNoRequester: 一些视图 { 虚拟堆栈{ 文本(“你喜欢吗”?) HStack { 但是...

回答 1 投票 0

@MainActor 闭包似乎没有确定地在主线程上执行

考虑以下相对简单的 Swift 程序: 进口基金会 func printContext(function: String = #function, line: Int = #line) { print("在 \(函数):\(行): 在 \(

回答 2 投票 0

使用.userInitiated和.userInteractive来解析大响应可以吗?

在我的应用程序中,我需要解析将直接用于渲染屏幕的一部分的响应。反响很大,因为它还包含其他内容。因为,我不想进行这种解析...

回答 1 投票 0

使用.userinititated和.userinteractive来解析大响应可以吗?

在我的应用程序中,我需要解析将直接用于渲染屏幕的一部分的响应。反响很大,因为它还包含其他内容。因为,我不想进行这种解析...

回答 1 投票 0

同步的 getter 方法是否看到完全或部分初始化的对象?

假设我有下一堂课: 类点{ 整数x、y、z; 公共点(int x,int y,int z){ 这个.x = x; 这个.y = y; 这个.z = z; } 公共**同步...

回答 1 投票 0

在 grep 克隆中使用 std::future 与 std::thread

我最近写了一个 grep 克隆。它对指定目录的所有文件进行字符串查询的递归搜索。程序的核心是如下所示的函数。 /** 递归搜索 q...

回答 1 投票 0

如何使用 AtomicBoolean 进行阻塞和等待

我正在寻找一种暂停线程的方法。 我首先有效地使用布尔标志(称为“暂停”),并用 while 循环包装检查(暂停)。 在 while 循环内有一个 Thr...

回答 5 投票 0

Go http.Get、并发和“对等方重置连接”

我有1000-2000个网页需要从一台服务器下载,我使用go例程和通道来实现高效率。问题是每次我运行程序时都会有多达 400 个请求

回答 5 投票 0

尝试同时发送和接收时,FanIn 模式会阻塞

包主要 进口 ( “FMMT” ) 函数主() { 甚至 := make(chan int) 奇数 := make(chan int) 退出 := make(chan int) fanin := make(chan int) 去发送(偶数,奇数,退出)...

回答 1 投票 0

每个用户发送通知的速率限制,例如 X 秒内 1 个通知

我有一个用例,队列中有消息流,我想使用具有这些限制的消费者作业将此消息发送给用户 有限制,比如我只能发送 1 个通知...

回答 1 投票 0

在 ASP.NET Core API 中处理并发礼品卡购买而不导致数据库并发问题

我正在开发一个礼品卡系统,其中有两个主要数据库表: 礼品卡和激活码。每张礼品卡可以有许多预先生成的激活码,并且在用户购买礼物后

回答 1 投票 0

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