Go:在通道中使用超时
在 Go 中,超时和通道提供了一种方便的方法来控制 goroutine 的执行并同步其结果。但是,在某些情况下,超时情况可能不会按预期执行。
问题陈述
考虑以下 Go 代码:
import "fmt" import "time" func check(u string) bool { time.Sleep(4 * time.Second) return true } func IsReachable(urls []string) bool { ch := make(chan bool, 1) for _, url := range urls { go func(u string) { select { case ch <p>此代码的目标是检查提供的列表中的所有 URL 是否均可访问。如果任何 URL 在一秒内未能响应,该函数应该返回 false。</p><p>但是,执行此代码时,它将始终返回 true。超时情况未执行。</p><p><strong>说明</strong></p><p>问题是由于 check(u) 的执行方式而产生的。在 IsReachable 函数中,每个 goroutine 通过调用 check(u) 检查 URL 的可达性。然而, check(u) 在返回之前会在当前 goroutine 中休眠 4 秒。</p><p>在 select 语句中, case ch </p><p><strong>解决方案</strong></p><p>要解决此问题,应执行 check(u) 函数在一个单独的 goroutine 中。这使得 select 语句能够正确处理超时情况。</p><p>这是更新后的代码:</p><pre class="brush:php;toolbar:false">import "fmt" import "time" func check(u string, checked chan<p>现在,如果任何 URL 无法在一秒钟内响应,该函数将返回错误的。此外,如果只有一个 URL 可用,该函数将返回 true。</p>
以上是为什么我的 Go 超时在此通道示例中不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

Golang和Python的主要区别在于并发模型、类型系统、性能和执行速度。1.Golang使用CSP模型,适用于高并发任务;Python依赖多线程和GIL,适合I/O密集型任务。2.Golang是静态类型,Python是动态类型。3.Golang编译型语言执行速度快,Python解释型语言开发速度快。

Golang通常比C 慢,但Golang在并发编程和开发效率上更具优势:1)Golang的垃圾回收和并发模型使其在高并发场景下表现出色;2)C 通过手动内存管理和硬件优化获得更高性能,但开发复杂度较高。

Golang在云计算和DevOps中的应用广泛,其优势在于简单性、高效性和并发编程能力。1)在云计算中,Golang通过goroutine和channel机制高效处理并发请求。2)在DevOps中,Golang的快速编译和跨平台特性使其成为自动化工具的首选。

Golang和C 在执行效率上的表现各有优势。1)Golang通过goroutine和垃圾回收提高效率,但可能引入暂停时间。2)C 通过手动内存管理和优化实现高性能,但开发者需处理内存泄漏等问题。选择时需考虑项目需求和团队技术栈。

Golang更适合高并发任务,而Python在灵活性上更有优势。1.Golang通过goroutine和channel高效处理并发。2.Python依赖threading和asyncio,受GIL影响,但提供多种并发方式。选择应基于具体需求。

Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。

selectgolangforhighpperformanceandcorrency,ifealforBackendServicesSandNetwork程序; selectpypypythonforrapiddevelopment,dataScience和machinelearningDuetoitsverserverserverserversator versator anderticality andextility andextentensivelibraries。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

WebStorm Mac版
好用的JavaScript开发工具