V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhengxiaowai  ›  全部回复第 5 页 / 共 70 页
回复总数  1390
1  2  3  4  5  6  7  8  9  10 ... 70  
2021-08-25 19:44:06 +08:00
回复了 superbai 创建的主题 Node.js nodejs 有什么类似流畅的 Python 的书吗
node 已经不太行了。。
2021-08-24 16:34:50 +08:00
回复了 boaofCHIAN 创建的主题 C++ C++ 优秀开源类库叠楼推荐
Folly:facebook c++ 开源工具库
2021-08-09 10:06:25 +08:00
回复了 tim0991 创建的主题 Go 编程语言 golang 中多个协程池如何优雅退出
先说结论:要在 main 中感知任务的完成状态可以通过 chan,控制数据流转也是用 chan,如果有超时机制或者每个任务属性之类数据需要用到 context 。

1 )步骤大约是
main 函数中创建三个用于接受结果的 A B C chan,大小为 A 任务个数,和一个 notify chan 用于完成通知,再来一个通知主程序关闭的 doneChan

起一个 goruntine 去 for notify chan
go func() {
for a := range nChan {
if (ACount == BCount == CCount == 100) {
doneChan <- struct{}
}

}
}


起三个 goruntine 去 for 分别处理 A B C chan,里面写处理逻辑,大约是这样子
go func(nChan chan Notify) {
for a := range AChan {
// dosomething

if ok {
bChan <- weiboEntryID
} else {
nChan <- weiboEntryID
}
}
close(bChan)
}(nChan)

go func(chan Notify) {
for b := range BChan {
// dosomething

if ok {
cChan <- commentID
} else {
nChan <- commentID
}
}
close(cChan)
}(nChan)

go func(chan Notify) {
for c := range CChan {
// dosomething

if ok {
cChan <- commentUserID
} else {
nChan <- commentUserID
}
}
}(nChan)

这时候就 main 中可以往 AChan 里写数据了,写完直接 close AChan,然后直接用 doneChan 阻塞

for userID := range userIDs {
AChan <- userID
}
close(aChan)
<-doneChan


大致流程就是这样,需要注意的是需要正确关闭 ABC chan,就是在发送完成后关闭,nChan 用于任务信息回收还可以用于任务回放,另外为了保证每个任务都会返回,需要弄一个 timeout context 超时当作失败处理

2 )第二种情况,由于任务个数是未知的,上面的 100 就不能用了,有两种方式可以解决,一是可以预先知道每次数量,用另外的一个 chan 再任务开始时候传给发送 doneChan 那个 goruntine,把 100 改成最后总数即可。二是未知任务数量,这时候只能再来一个 chan,在做完 ABC 后发送一个 aDone 、bDone 、cDone,给发送 doneChan 那个 goruntine,当确认三个都完成后,就可以发送 done 了。

------

code 硬敲的可能很多不对,变量和具体结构可酌情改变 :-)
2021-07-30 17:20:15 +08:00
回复了 RunningDurian 创建的主题 职场话题 铁们?我想问问你们对未来的规划。
钱多事少离家近
2021-07-14 07:43:23 +08:00
回复了 ronhunlam 创建的主题 职场话题 offer 选择,大佬们给点意见
泉州有啥公司??
2021-07-05 10:26:02 +08:00
回复了 henryhu 创建的主题 git 大伙常用什么查看 git 提交?命令行还是图形界面?
只会命令行。。。
2021-06-28 05:57:57 +08:00
回复了 beexu 创建的主题 程序员 《tcp/ip 详解卷一第二版》值得花时间精读吗
不太同意楼上大大们的观点,作为计算机三大基础,我认为还是有必要花时间好好看看的,但是队伍吾等 curd boy + game boy 时间有限,感觉看的顺序应该是《操作系统》> 《编译原理》> 《计算机网络》

ps:《 tcp/ip 详解》确实过于专业枯燥了,可以先从简单的入手,比如《图解 tcp/ip 》
2021-06-19 22:32:42 +08:00
回复了 zhoudaiyu 创建的主题 职场话题 大家公司都用什么办公协同软件/办公 IM?
基本上就钉钉和飞书找一个把?如果比较依赖外部的会用企业微信把。。。
2021-06-11 01:06:25 +08:00
回复了 fmdxx1991 创建的主题 Python 请教一下大佬多进程的超时问题
https://docs.python.org/zh-cn/3/library/multiprocessing.html#using-a-pool-of-workers

有 timeout 参数,会抛出异常,另外 "最后让所有的进程都在 10s 内成功运行完成" 你得有足够的进程数量
2021-06-11 01:01:49 +08:00
回复了 godbasin 创建的主题 程序员 我滴第三本书出版啦!分享写文章的一些感受~
大佬收下我的膝盖
2021-06-11 01:00:53 +08:00
回复了 tangzx 创建的主题 程序员 GitLab 国内版要来了,不香么
@wanacry ??????????????????????????????????????
2021-06-11 00:35:02 +08:00
回复了 tangzx 创建的主题 程序员 GitLab 国内版要来了,不香么
这么快就忘记 gitlab 黑历史吗?
https://news.ycombinator.com/item?id=21437334

再说了 github 足够好用
2021-06-03 19:53:28 +08:00
回复了 Zhancha 创建的主题 职场话题 国企编制 vs 私企 怎么选?
编制只的是通过正规公务员或者事业单位同时考试面试之后才会有的,给发钱是国家或者国家发一部分单位发一部分

看楼主 应该不是通过考试进去的,就是普通的合同工,从工作性质上来说等同私企。

另外国企单位也是有好处的,就是真的安逸。。。
2021-05-30 16:32:59 +08:00
回复了 Pogbag 创建的主题 北京 想办一个北京联通的宽带 有便宜的途径吗
无,都这个价格也就几十块的空间
2021-05-19 10:26:36 +08:00
回复了 remrem 创建的主题 Python 请教下如何安装 github 下载的依赖呢?
看了下有 setup.cfg 文件就是 ok 的,setup.py 才是可选的邪教。。具体啥报错贴出来看看
1  2  3  4  5  6  7  8  9  10 ... 70  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4172 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 63ms · UTC 05:30 · PVG 13:30 · LAX 21:30 · JFK 00:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.