V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 34 页 / 共 83 页
回复总数  1644
1 ... 30  31  32  33  34  35  36  37  38  39 ... 83  
定时器的实现主要有两个点:
1. 管理定时器的数据结构
如果你用 c++ ,priority_queue 维护每个 fd 的超时时间:
https://en.cppreference.com/w/cpp/container/priority_queue
如果用 c ,找个或者自己实现个小堆也可以
除非你对精确度要求非常低、时间轮间隔很小这种,否则真没必要:一是不精确,越想要精确则间隔越小越可能空跑,二是小堆做优先级队列基本是行业认可的最佳时间

2. 定时器的触发器,简单点可以用 epoll_wait ,虽然秒级精确度但对于 read deadline 足够了,如果想更精确或者框架提供通用的精确定时器,可以用 timer_fd

1 、2 结合起来,如果更新、设置超时时间都是在 epoll event loop 里,就是把 priority_queue 堆顶最小超时时间作为 epoll_wait 下一轮的 timeout 参数或者 timer_fd 的超时时间,如果跨线程设置还要考虑唤醒 epoll_wait 或者更新 timer_fd 相关

这只是简单实现方案,涉及到完整框架的你还要考虑并发调用、锁、一致性等各种细节


> 这个方法刚才试了试,发现接到(event[i].events & EPOLLIN)后,无法区分是 timer_fd 还是 socket_fd ,就不能直接 accept(),因为可能接到 accept(timer_fd),就会错误,在程序看来都是 fd 。

#11 这就是说胡话了,你自己创建的 listener fd 、自己创建的 timer_fd ,你 switch case listener case timer default socket 一下就知道是哪个了,再不济,你存储 fd 对应的结构的地方,结构体加个字段标记 type 也就知道了
2024 年 3 月 1 日
回复了 CLCLCLCLCL 创建的主题 机械键盘 宁芝 X108 三模 45g 侧刻 T 系, 求助
NIZ 的品质细节是真的不行,比如支脚生硬支起来的时候键盘滑动不舒服、而且掰支脚的时候要一次发力到位否则就容易坏
燃风太丑否则就燃风了
NIZ 白色的颜值是我最喜欢的,键的触感也够好、不同克数我都喜欢,所以两把、单个克数用久了腻了切着用
2024 年 2 月 28 日
回复了 jimmyczm 创建的主题 职场话题 如果你同事每天下午煮鸡蛋,你会怎么看
如果味道太淡,可以蘸盐
再不济,加钱请技术咨询来协助定位、开发
暂时想到几点,OP 可以参考下:
1. 多用一些出口 IP ,对方没有限制并发可能是不直接报错但对单 IP 高频可能也有频率限制
2. 是每个请求一个短链接吗?还是 keepalive 的复用长连接?如果是 keepalive 复用长连接,http 1.x 很多不支持 pipeline 的所以要请求-响应然后才发下一个这就比较慢了,如果是 http2.0 又有 4 层线头阻塞的问题、并发量大了也是慢的很,所以也确认清楚这个
3. py 的实现是怎样的,for 循环发送 8000 个? 10 台机器每个节点 for 循环 800 个?这个 for 循环调用所有请求一共多久?请求回来再处理、虽然是异步的但是处理响应的代码是 py 的吧?有没有把这部分也统计上?
4. 对比下其他语言的实现?比如 go ,如果姿势 http 请求也是比较容易的
5. 会不会有订阅机制、竞品订阅了实时收到通知?

实在不行加上抓包分析下网络吧
2024 年 2 月 22 日
回复了 Corybyte 创建的主题 程序员 2024 有推荐的 go 开源项目吗 想深入学习
@kingphang tidb 的核心是 rust ,go 虽然也算重要但只能算是周边而且用其他语言也能做好这些周边,但 rust 的部分做不了
2024 年 2 月 20 日
回复了 xiaoshu 创建的主题 程序员 [晋升复盘] 用了两周时间写的,希望对大家有帮助
@xiaoshu 哦大概想明白了,只是统一接入层、登陆鉴权这些,不涉及太多具体的业务吧?这样的话那就正常了,现在确实大家都用微信多、qq 用的少了
如果涉及业务本身,业务逻辑的请求远大于这个了
2024 年 2 月 20 日
回复了 xiaoshu 创建的主题 程序员 [晋升复盘] 用了两周时间写的,希望对大家有帮助
@xiaoshu 对,我说的也是接口
2024 年 2 月 20 日
回复了 xiaoshu 创建的主题 程序员 [晋升复盘] 用了两周时间写的,希望对大家有帮助
前端统一接入层不可能才这么点量吧,国内稍微大点的业务一天就十亿百亿次级别了

“机缘”这词是全文最大干货,其他干货在“脱敏需要 被删除了”的那部分里
OP 我们一直在卷 golang ws 这些,欢迎各位来试试:
github.com/lesismal/go-websocket-benchmark
2024 年 2 月 17 日
回复了 mikewang 创建的主题 程序员 大家如何看待代码中的拼写错误?
另一个角度:因为有 typo ,所以让更多人相对容易地成为了 contributor ,虽然这种 pr 有水分,但至少培养了兴趣、提高了参与度,对社区未来也是有好处的
2024 年 2 月 17 日
回复了 wang5635099 创建的主题 分享发现 后悔了,当初就不该买联想小新轻薄本
现在劝 OP 不玩游戏、少玩游戏已经晚了
2024 年 2 月 15 日
回复了 millet230413 创建的主题 程序员 我想到了一个学习 nginx 的方式,嘿嘿嘿嘿
@millet230413 #15
如果要自己手撸 epoll ,可以试试我的:github.com/lesismal/nbio
2024 年 2 月 15 日
回复了 momo2023 创建的主题 电影 看完《热辣滚烫》后你有什么感触呢?
@nuofei 对,小品好多个都很好,电影我个人最喜欢《夏洛特烦恼》,《西虹市首富》也好看,除了这俩电影,好像其他的都不咋地。。。
2024 年 2 月 15 日
回复了 millet230413 创建的主题 程序员 我想到了一个学习 nginx 的方式,嘿嘿嘿嘿
支持 OP 用 golang 搞搞看!
但这种基础设施,我也投 rust !
2024 年 2 月 15 日
回复了 millet230413 创建的主题 程序员 我想到了一个学习 nginx 的方式,嘿嘿嘿嘿
基于 runtime 、标准库 Conn ,caddy 开销太大,根本干不过 nginx
不用 runtime 自己手撸 poller 性能也干不过 nginx 、但是好在 golang 方便开发
看得人心疼,祝好!
2024 年 2 月 14 日
回复了 airportIllIl 创建的主题 职场话题 同事是老油条该咋办
除了变革性的牛逼技术,普通技术根本就不值钱。所以普通人专注技术赚多些钱的概率比较低、得靠运气。
建议 OP:去其糟粕钻技术,取其精华学社交,Follow Him ,现在不 Follow ,以后年纪大了悔之晚矣。
1 ... 30  31  32  33  34  35  36  37  38  39 ... 83  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2862 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
♥ Do have faith in what you're doing.