go 开启多个goroutine 执行任务, 偶尔会出现 内存地址错误

go 开启多个goroutine 执行任务, 偶尔会出现 runtime error: invalid memory address or nil pointer dereference

跟函数的参数是 *DB有关吗?
是否需要在函数内部去创建连接资源吗?
不能外面统一传到函数内部用吗?

go
最佳答案

最好贴代码,还有就是不要将连接通过参数传递进去,而是定义一个包内变量,包外用的话设置为可导出,每个方法定义一个变量去接收,不是传参

3年前 评论
讨论数量: 5

是一个goroutine的数据库资源连接还没释放,另一个goroutine又去取这个数据库连接资源,然后取不到,就报出nil了。

3年前 评论
Fell-boy 3年前

最好贴代码,还有就是不要将连接通过参数传递进去,而是定义一个包内变量,包外用的话设置为可导出,每个方法定义一个变量去接收,不是传参

3年前 评论

使用channel或者加互斥锁

3年前 评论
萧风

在数据库那增加一个 once.Do 保证数据库的连接,和开始数据库长连接

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!