V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Nazz  ›  全部回复第 33 页 / 共 45 页
回复总数  889
1 ... 29  30  31  32  33  34  35  36  37  38 ... 45  
2023-03-13 11:19:56 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@rockuw 从你的 Benchmark 结果来看, 差距不大. GwsWorkqueue 是专门为 IO 任务设计的, 每个 WebSocket 连接上有读写两个任务队列, 它们非常轻量, 而且并行读写不会新增常驻协程. 量变产生质变, 每个连接上都增加常驻协程会使 CPU 使用率提高不少. 实际业务中并发不会很高, 可以用优先队列替代普通队列减少 allocs, 收益不高我懒得去优化了, 复用 goroutine 对于 IO 任务收益也不大.
全栈大佬
看起来还不错
2023-03-05 13:16:43 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@chuanqirenwu 刚实现的 client ,还在测试
2023-03-05 08:18:48 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@chuanqirenwu 确实有 EventLoop. 最开始我是模仿的 JS, 因为我认为 JS WebSocket API 比 gorilla/nhooyr 这些提供的都要清晰得多. 初版只有 Sync IO, Read=>Event Handler=>Write 循环往复. 后面在此基础上加了 Async IO, AIO 模式在每个连接上有读写两个任务队列(并发度分别是 N 和 1), 就是我分享的这个实现, 它需要足够的轻量. 两种模式压测表现都比 gorilla 好得多, 原因大概是 Parser 本身的简单高效和无额外常驻协程吧, 如果有, 协程数量会增加一倍.
2023-03-05 07:43:55 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@MindMindMax 尽量使用 mutex 替代 chan. 很多时候保证线程安全就行了,不需要多线程通信. channel 我用得最多的地方是线程同步和超时控制.
2023-03-04 23:13:29 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@chuanqirenwu 同步模式没开额外协程,异步模式会开非常驻的协程,执行完任务就退出, 两种模式都没使用 channel.
2023-03-04 09:11:23 +08:00
回复了 liul2566 创建的主题 程序员 面试官:你认为你相比于其他候选者的优势是什么?
待遇要求低, 身体好能加班
2023-03-04 07:56:16 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@rrfeng 另外几种"协程池"都用了 channel
2023-03-04 05:01:22 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@Nazz 这种方式不能保证 fifo ,并发小的话还是 heap 好点
2023-03-04 04:51:15 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@hsfzxjy
@securityCoding
其实最完美的结构是 stack. 我想到一种优化方式,先 push, 然后 swap(q[0], q[n-1]), 最后 pop
2023-03-04 04:28:30 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@voidmnwzp 你不妨说明白点具体是什么语言
2023-03-04 04:26:31 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@hsfzxjy 是一个优化点
2023-03-03 23:22:29 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@Mitt mutex 比 channel 轻量
2023-03-03 23:20:29 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@Glauben 加上 recover 结果也差不多
2023-03-03 23:15:51 +08:00
回复了 Nazz 创建的主题 分享创造 golang 分享: 60 行代码巧妙实现一个高性能无 channel 任务队列
@ihciah 递归
2023-03-03 13:06:47 +08:00
回复了 CC11001100 创建的主题 Go 编程语言 域名后缀树(Golang)
和路由前缀树差不多,Reverse 一下就好了
2023-03-02 17:20:52 +08:00
回复了 dw2693734d 创建的主题 Go 编程语言 golang 的哪个 websocket 好用?
@dw2693734d 自引用结构没法玩
2023-02-28 21:41:20 +08:00
回复了 cjlalalala 创建的主题 程序员 为什么 nodejs 的异步事件可以同时执行
并没有同时, 只是间隔很小
1 ... 29  30  31  32  33  34  35  36  37  38 ... 45  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2841 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 15:01 · PVG 23:01 · LAX 07:01 · JFK 10:01
Developed with CodeLauncher
♥ Do have faith in what you're doing.