go - golang spimple crud web api,我是否需要为每个处理程序启动一个 goroutine
问题描述
我正在用 golang 编写一个简单的 web api,其中包含 crud 操作(从数据库读取和写入)。作为其中的一部分,我是否需要为每个处理程序启动一个 go 例程,HandleFunc
或者服务器 api 是否通过HandleFunc
. 如果我需要启动一个单独的 go 例程,我假设我必须使用缓冲通道来发送信号,以及如何确保使用正确的上下文将请求发送回正确的客户端。
如果这是一个基本问题,我很抱歉,但我来自 nodejs 背景,这是自动处理的。
解决方案
是的,每个处理程序都运行在一个 goroutine 上。您需要使用互斥锁或通道来管理对共享资源的访问。本文展示了如何以非常实用的方式管理并发:https ://eli.thegreenplace.net/2019/on-concurrency-in-go-http-servers/
推荐阅读
- html - Lighttpd 服务器无法在自定义错误中打开 jpg 图像
- android - 使用 audiorecord 录制后音轨会发出噪音
- python - 在基本脚本中使用 break 语句
- spacy - 为什么我的 SpaCy v3 记分器在精度、召回率和 f1 方面返回 0?
- javascript - JSON 匹配键/值并获取每个键的总值
- javascript - JavaScript - 延迟加载
- 元素
- amazon-web-services - 使用 CodeDeploy 部署 ECS BlueGreen
- xml - 由于命名空间“xmlns:ns0”,无法使用 XSLT 转换 XML
- python - 在上传到数据库之前使用 Mongoengine 验证修改
- apache - 从负载均衡器到后端的加密无法使用 HTTPS 后端进行