V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wpf375516041  ›  全部回复第 2 页 / 共 2 页
回复总数  28
1  2  
2021-02-08 23:16:58 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 求 go 并发限制的最佳实现
我觉得这是个很好的面试题,既有实际意义也考验基本功,大家可以试试不用三方库实现一下~
talk is cheap, show me the code
一起娱乐娱乐,新年快乐~!
1. 控制并发
2. 等待所有任务返回
3. 一个任务错误,立刻结束

如果不解耦,并发控制和结果处理的逻辑混杂确实屎

go 实现的时候想当然了,只以最后提交的任务判断是否结束

kotlin 协程实现的时候发现 io,计算任务无法退出,必须要手动捕捉中止信号

java 须要手动捕捉中止信号 但是可以通过 thread.stop()强制停止,另外判断线程是否异常退出较难
2021-02-08 22:55:03 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 求 go 并发限制的最佳实现
@monkeyWie 是滴 用 waitgroup 大家说的都对 其实你把原来的封装下 搞个协程池 代码就清晰了
2021-02-08 17:03:40 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 求 go 并发限制的最佳实现
package main

import (
"fmt"
"net/http"
)

/*有 N 个任务,每个任务都会返回结果或者 error,通过固定的并发数(M)去执行。
如果其中有一个任务返回 error 时立即结束,否则全部执行完成时返回结果列表*/
func main() {

n := 10
m := 5
result := make([]string, n)
limitCh := make(chan interface{}, m)
errCh := make(chan error)
doneCh := make(chan interface{},1)

defer func() {
close(limitCh)
close(errCh)
}()

for state, i := true, 0; i < n; i++ {
state = true
for state {
select {
case limitCh <- nil:
fmt.Printf("开始第%d 个任务\n", i)
go func(i int) {
var err error
defer func() {
if i == n-1 {
close(doneCh)
}
if err != nil {
errCh <- err
}
<-limitCh
}()
ret, err := doTask()
if err != nil {
return
}
result[i] = ret
}(i)
state = false
case <-errCh:
return
default:
}
}
}
<- doneCh
fmt.Println(result)

}

func doTask() (string, error) {
// 模拟执行任务
resp, err := http.Get("https://www.baidu.com")
if err != nil {
return "", err
}
defer resp.Body.Close()
return resp.Status, nil
}
2021-02-05 15:52:05 +08:00
回复了 muchan92 创建的主题 程序员 写代码如盗墓笔记,如何逃出生天?
寻龙分金看缠山
一重缠是一重关
关门如有八重险
不出阴阳八卦形

不会寻龙诀,你玩个 der 啊
2020-11-25 17:14:23 +08:00
回复了 6234127 创建的主题 macOS mac 的 excel 太难用了, 有替代品么?
wps 好用,可惜不能回复图片
2020-11-10 09:30:10 +08:00
回复了 tuochenlyu 创建的主题 职场话题 无锡微软 VS 深圳腾讯
这是我在另外一个 35+问题下的回答,放在这儿也合适。我建议有时间去无锡住一段时间试试,看看是不是你想要的生活。
至于各种从公司,职位角度给你建议的,都可以忽略,你现在的抉择是人生大方向,未来的生活方式。
-----------------------------------------------------分割线-----------------------------------------------------------------------------------
我在上海传统企业,外企,互联网企业都待过,疫情期间,辞职回二线城市体制内,目前正在重回上海
说说感受,优劣势想到哪儿说到哪儿
1. 国企中高层压力很大,每个人头上压着几千万的指标
2. 部分国家重点项目需要集中攻关,出差多,且时间长,无法照应家庭
3. 技术工作以外包,外协为主,每天在开会,写方案,方案设计一坨屎,但是没办法,必须贴着上面的标书来呵呵
4. 能接触到高端人脉,当然只是会躺在好友列表里,如何进行有效社交,也是我在学习的一门课
5. 薪资砍一半
因为各种原因,现在重回上海,35+固然是国内工友的共性问题,我认为解决这个问题的方式其实就是社交能力,提升自己的社会地位。技术研发类人员现在也有自发的去组织,比如类似鲲鹏会,架构师大会,都是非常好的社交机会。国企内部人员裁员,转编,转业也很多,但发达的社交关系让他们彼此之间互相依靠,没有压力。
2020-11-03 11:25:26 +08:00
回复了 5sheep 创建的主题 程序员 35 岁技术人转行当一名小学老师,需要怎么操作才能成功。
我在上海传统企业,外企,互联网企业都待过,疫情期间,辞职回二线城市体制内,目前正在重回上海
说说感受,优劣势想到哪儿说到哪儿
1. 国企中高层压力很大,每个人头上压着几千万的指标
2. 部分国家重点项目需要集中攻关,出差多,且时间长,无法照应家庭
3. 技术工作以外包,外协为主,每天在开会,写方案,方案设计一坨屎,但是没办法,必须贴着上面的标书来呵呵
4. 能接触到高端人脉,当然只是会躺在好友列表里,如何进行有效社交,也是我在学习的一门课
5. 薪资砍一半
因为各种原因,现在重回上海,35+固然是国内工友的共性问题,我认为解决这个问题的方式其实就是社交能力,提升自己的社会地位。技术研发类人员现在也有自发的去组织,比如类似鲲鹏会,架构师大会,都是非常好的社交机会。国企内部人员裁员,转编,转业也很多,但发达的社交关系让他们彼此之间互相依靠,没有压力。
2020-11-03 11:09:18 +08:00
回复了 5sheep 创建的主题 程序员 35 岁技术人转行当一名小学老师,需要怎么操作才能成功。
@xsen
首先国企也是 996 还没编,真是动荡了神也保不住,去中科院,移动,电信看看,比起私企更甚
一二线大厂工资超乎的你想象,硕士 3 年本科 5 年大部分能拿到 50~80w 的
35 岁是所有人的问题,中年普通人最大的财富是社交
打铁还需自身硬
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2488 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 15:44 · PVG 23:44 · LAX 07:44 · JFK 10:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.