cost 200 ms
致命错误:所有 goroutines 都睡着了 - 死锁 | Go例程 - fatal error: all goroutines are asleep - deadlock | Go Routine

问题是 goOne 和 goTwo 函数都分别向通道 ch1 和 ch2 发送值,但是在主 function 中没有这些值的相应接收器。这意味着通道被阻塞,程序无法继续。 导致main function中的select语句无法从通道读取,所以一直执行default case。 Output: 我正 ...

如何在使用正则表达式解析 URL 的文本文件时使用 go-routines - How to use go-routines while parsing text file for URLs with regex

我被赋予了一项任务,以给定的方式使用正则表达式和带有等待组的 goroutine 在文本文件中搜索 URL:文本应该在 N 个工作人员(goroutines)之间划分,每个 goroutine 搜索 //https://,goroutines在 waitgroup 中,最终结果应该是来自所有 go ...

我如何编写一个 function 来接受 2 个函数(返回结构)并同时运行它们? - How can I write a function which accept 2 functions (which return structs) and runs them concurrently?

在我写的 golang package 中,我经常需要发出 2 HTTP 请求来获取我需要的数据。 我的 package 包含客户端函数,通常有 0 arguments 并返回一个结构和一个错误。 func (c Client) GetProduct() (*Product, error) 但是, ...

Goroutine Kafka 消费者 - Goroutine Kafka Consumers

我目前有一个程序可以创建一个大小为 1 的工作组,然后调用 startworker: 写CreateGroup的地方: Startworker 是这样写的: 这适用于大小为 1 的工作组,但每次尝试使它适用于更大的工作组都失败了——到目前为止我所学到的是我想要context.WithCancel( ...

在 Go 中,我们如何在保持列表顺序的同时应用并发调用? - In Go, how do we apply concurrency calls while preserving the order of the list?

为了给你上下文, 变量elementInput是动态的。 我不知道它的确切长度。 它可以是 10、5 等。 *Element 通道类型为 struct 我的例子正在工作。 但我的问题是这个实现仍然是同步的,因为我正在等待通道返回,以便我可以 append 它到我的结果您能帮我如何同时调用GetE ...

在 WaitGroup 例程中使用 Channels 填充数组 - Populating an array using Channels in a WaitGroup routine

我想在子例程中填充 arrays 数组。 我正在尝试使用频道来做到这一点。 我正在学习 go,所以不清楚这是否是正确的方法,所以如果我走错了方向,请纠正我,但我的代码永远不会返回。 我究竟做错了什么?var c = make(chan [15][4]string) var mymap = map[ ...

Golang 'defer' 导致延迟发送(接收)API 响应 - Golang 'defer' causing delay in sending(receiving) API response

我创建了一个 API,它在处理请求后发送一个响应并启动一个记录一些消息的后台 goroutine。 在处理 API 请求后,我使用“延迟”来执行 goroutine。 以下是代码片段: 发送响应伪代码: 响应结构: API 正文: logMsgs 伪代码: 预期结果是收到 API 响应,几秒后( ...

如何串行一些 goroutings 才能完成 - How can serial some goroutings to be finish

我有一个 Go 项目示例,试图模拟类似烘烤 1000 个披萨并发的东西,但烤箱只有 10 个部件来放置披萨。 我是这样开发的,但是goroutines死锁了。 谁能帮忙 当 10 个烤箱部分充满死锁时会引发错误准备披萨:9 准备披萨:0 准备披萨:1 准备披萨:2 准备披萨:3 准备披萨:4 准备披 ...

如何在 golang 的 stream 上发送数据时并发工作? - How to make work concurrent while sending data on a stream in golang?

我有一个具有流式端点的golang grpc 服务器。 早些时候我按顺序完成所有工作并发送到 stream 但后来我意识到我可以让工作并发然后发送到 stream。来自grpc-go文档:我知道我可以让工作并发,但你不能让 stream 并发发送,所以我得到了下面的代码来完成这项工作。 下面是我的 ...

如何高效地并行化数组列表并控制并行度? - How to efficiently parallelize array list and control the parallelism?

我有一个需要并行循环的resourceId数组。 并为每个资源生成URL ,然后放入一个map,它是键(resourcId),值为url。 我得到了下面的代码来完成这项工作,但我不确定这是否是正确的方法。 我在这里使用sizedwaitgroup来并行化resourceId列表。 并且在向其写入数 ...

在 go 例程开始后立即调用等待组? - calling wait group done right after go routine starts?

https://go.dev/play/p/YVYRWSgcp4u 我在“开发人员的 Go 工具和技术中的并发性”中看到了这段代码,其中提到了广播的用法,上下文是使用广播来唤醒三个 gorouting。 我正在尝试了解订阅部分 作者说: 在这里,我们定义了一个便利函数,它允许我们注 ...

是否有另一种方法可以让 WaitGroup 显示该过程? - Is there another way to make WaitGroup showed the process?

这是我运行整个工作人员的代码段 这是我的工人 当我在没有 WaitGroup 的情况下运行时,它只会创建我需要的整个文件中的一部分。 但它显示了它的过程。 它显示worker1做工作,worker2做工作等等......所以直到程序结束它会显示每一个。 否则,使用 waitgroup 它创建我需要 ...

即使 WaitGroup 实现存在问题,代码也会成功执行 - Code executes successfully even though there are issues with WaitGroup implementation

我有这段代码,它使用输入和 output 通道和相关的 WaitGroups 同时运行 function,但我被告知我做错了一些事情。 这是代码: 我已经在评论中指出我执行错误的地方。 现在这些评论对我来说很有意义。 有趣的是,这段代码确实看起来是异步运行的,并且大大加快了执行速度。 我想了解我做错 ...

Go:负 WaitGroup 计数器 - Go: negative WaitGroup counter

我对 go 有点陌生,并且正在修改我在其他地方找到的代码以满足我的需求。 正因为如此,我并不完全理解这里发生了什么,尽管我明白了一般的想法。 我正在使用 go 例程运行一些 websocket 客户端,但是我遇到了一个导致程序崩溃的意外错误。 当从 websocket 读取消息时出错(检查 read ...

如何检查是否在单元测试中调用了 sync.WaitGroup.Done() - How to check if sync.WaitGroup.Done() is called in unit test

假设我有一个 function 如果它作为 go 例程异步执行: 如何为f创建一个单元测试以确保wg.Done() ? 一种选择是在调用f之后直接在测试中调用wg.Done() 。 如果f调用wg.Done()失败,测试会恐慌,这不好。 另一种选择是为sync.WaitGroup创建一个接口,但这 ...

function 的单元测试,在其中启动 go 例程 - Unit testing of a function that starts a go routine inside it

我有一个大致如下的代码库 我编写了与此类似的单元测试。 所有测试均成功。 但是在执行命令go test -v时,我在代码中的多个地方看到程序出现恐慌并给出了invalid memory address or nil pointer dereference 。 我在调试模式下检查了代码,发现问题出在方 ...

永远连续运行最多两个 goroutine - Running a maximum of two go routines continuously forever

我正在尝试同时运行一个函数。 它调用我的数据库可能需要 2-10 秒。 我希望它在完成后继续下一个例程,即使另一个例程仍在处理,但只希望它一次最多处理 2 个。 我希望这无限期地发生。 我觉得我几乎没有,但waitGroup的力和程序要等到完成继续另一次迭代之前。 ...

Go 例程返回的结果少于实际结果 - Go routine returns less results then the actual result

我有一个 LOOP,它对给定的键在内部进行散列并返回结果,但在结果上,如果我有 1500 个 URL 列表进入 LOOP,它永远不会返回 1500 的结果,它总是返回小于 1500。 我在下面做错了什么: 我尝试了两种Add方法 - 一个内部循环为 1,一个外部循环为总长度。 我希望函数返回 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM