1
simapple 2019-12-05 17:08:22 +08:00
在需要等待 io 的地方 最小化 一个 goroutine
|
2
BlackBerry999 2019-12-05 17:08:28 +08:00
要看实际情况,如某些请求对响应时间有要求,但是有部分业务处理耗时较长,此部分会用协程异步处理。
总结一下:按需处理。 |
3
Mithrandir OP @BlackBerry999 @simapple 我理解 goroutine 本来就不会因为自身的在处理 IO 操作而导致其他 gorutine 等待,那么这种情况开新 goroutine 有啥意义呢。
|
4
Mithrandir OP 如果是非 IO 操作导致该 goroutine 处理时间过长,这种情况新开 goroutine 也没用啊,该占用的 CPU 时间还是要占用。
|
5
yuankui 2019-12-05 18:05:24 +08:00
一杆子,捅到底
|
6
Heebe 2019-12-05 18:14:08 +08:00
我喜欢丰满的,他喜欢瘦的。不过我们都追求一个原则,必须是女的!
任何模式都是基于业务而设计。 |
7
22too 2019-12-05 18:18:31 +08:00
基于业务,理论上你都在当前开启了一个 goruntine 了. 那就你认为内部的东西是可以异步的. 具体这个异步里面要不要再写 goruntine ,还是要看你的业务能不能 异步, 如果只能同步操作,就不要开启. 如果能异步那就开启 goruntine.
如楼上说的, 基于业务 |
8
Mithrandir OP @22too 嗯,有道理
|
9
gamexg 2019-12-05 18:38:13 +08:00
一般是一个 goruntine 到底,
因为虽然 goruntine、chan 成本低,但是也是有成本,没必要多开一个浪费资源。 但是一些特殊情况下会单独开个 goruntine , 例如客户一个连接发出多个请求,其中部分请求类型依赖外部服务并且可能高耗时。 在客户端可以接受乱序回应的情况下,会使用新 goruntine 处理,根据不用情况,可能考虑提供线程池等方式处理请求。 |
10
index90 2019-12-05 18:56:03 +08:00 1
给 blog 开发一个接口,根据文章 id,查询文章内容及评论。
初级后端开发:根据 id 查询文章内容,根据 id 查询评论 传统后端开发:根据 id 组成 join 查询语句,把查询丢给 db 处理 现代后端开发:根据 id 同时查询文章内容和评论,组合并返回 |