在最近的使用 golang 开发中,发现 goroutine 实际上解决的只是线程资源的调度,避免大量线程带来的资源瓶颈。
而在实际开发中,更多遇到的问题是其他的资源瓶颈带来的。比如 tcp 连接、数据库连接、带锁的资源等。并不只是一个简单的线程资源的问题,当使用这些资源时,还是需要要用到使用传统线程时的一些思想/技术。
所以说感觉并发这个问题是个大坑,软件工程没有银弹。
当然了, golang 能合理调度线程资源已经是语言的一个很大进步了,不用让程序员自己费心调度线程。
具体的思考我写到博客里了,这里贴代码和图不太方便,我放个链接吧:
并发难 | 池里究竟该放多少线程?https://lengzzz.com/note/concurrency-roadblock-how-many-threads-should-be-in-pool
只是个人观点,抛砖引玉,大家多多讨论一下。
软件工程没有银弹,路漫漫其修远兮,吾将上下而求索。