https://github.com/zhenzou/executors
Go 泛型快发布了,就想着练练手。
虽然现在主要用 Go 了,但是还是怀念 Java 的一些东西,所以封装了一个协程池,提供一个类似 Java 的线程池的 API ,支持 future ,callback ,能够异步转同步等。
一般情况下,其实用不上协程池,但是在需要限制并发的场景下还是有用处的,新入坑的同学可以参考参考这个项目。
吐槽一下,Go 泛型不支持 method type param ,限制实在太大了。 虽然也可以通过 func type param 转一下,但是确实还是太丑。
本来准备把 CompletableFuture 的 API 实现下,但是不支持 method type param 组合起来不好看,就参考 JS 简单提供一个 then ,catch API 了。
1
makdon 2022-03-05 23:53:58 +08:00
限制并发的话,一个 chan 就可以了吧
|
2
ZSeptember OP @makdon chan 自然可以,Go 限制并发的基本都是基于 chan 的。在很多地方用到的话,慢慢就会想着复用,最终还是会演进成一个协程池的模样。
|
3
makdon 2022-03-06 00:50:03 +08:00
@ZSeptember 就 3 行,不至于变成协程池吧...
|
4
mind3x 2022-03-06 03:36:20 +08:00 via Android
method 上不支持额外 type parameter 实在是太限制了
|
5
ZSeptember OP @mind3x 是的,Go 这种有反射的语言,要做泛型,用类型擦除是比较简单的,但是性能差点。现在的实现是基于模版的,支持 method type param 感觉比较难。
|
6
ZSeptember OP @makdon 简单梳理下,可能的演进方向
https://gist.github.com/zhenzou/21f4f1e585105540050f14c8e5cd5d6a 简单使用 chan 当然能运行,只是应该可以有更好用的 API 而已。 |
7
makdon 2022-03-06 11:12:11 +08:00
@ZSeptember 这么看起来确实更简洁了
|