panjf2000 / ants

🐜🐜🐜 ants is the most powerful and reliable pooling solution for Go.
https://ants.andypan.me/
MIT License
12.83k stars 1.36k forks source link

为什么这里这样设计,不是循环引用么?求大佬解答 #240

Closed jiangjiangjiangjiangjiangjiangjiang closed 1 year ago

jiangjiangjiangjiangjiangjiangjiang commented 2 years ago

这PoolWithFunc 和 goWorkerWithFunc 循环引用,没看明白为什么这样设计,求大佬解惑

image

panjf2000 commented 2 years ago

这里都是在同一个 package 里,没有什么循环引用。

jiangjiangjiangjiangjiangjiangjiang commented 2 years ago

我理解,这里这个设计,应该是建立对应的worker和pool之间的所属关系。如果他们在不同的package是不是就不能这样设计了?这样设计的优点是?希望能够得到作者的解惑

walkmiao commented 2 years ago

我理解,这里这个设计,应该是建立对应的worker和pool之间的所属关系。如果他们在不同的package是不是就不能这样设计了?这样设计的优点是?希望能够得到作者的解惑

只要循环引用了就不能这样设计,这样设计不就是因为goWorkerWithFunc也用到了PollWithFunc吗。go中有非常多的这样设计,gin框架里也有