我对Golang中的互斥锁如何工作有些困惑,尽管我以前使用过它们。
以下是我的问题:
1. 互斥锁确切地锁定了什么?(如何)只锁定特定变量? 2. 我应该使用通道而不是互斥锁吗? 3. 互斥锁和locker之间有区别吗?
我正在使用Golang开发高并发网站,并需要在不同时间管理每个人的钱包,我试图避免程序中的任何竞争。例如,如果我的程序想要为用户添加500积分,它将读取用户的当前余额(从firebase)并添加500,然后更新该值。但是,如果由于某种原因它执行了两次,则可能会对用户的钱包造成错误的更改。
以下是我的问题:
1. 互斥锁确切地锁定了什么?(如何)只锁定特定变量? 2. 我应该使用通道而不是互斥锁吗? 3. 互斥锁和locker之间有区别吗?
我正在使用Golang开发高并发网站,并需要在不同时间管理每个人的钱包,我试图避免程序中的任何竞争。例如,如果我的程序想要为用户添加500积分,它将读取用户的当前余额(从firebase)并添加500,然后更新该值。但是,如果由于某种原因它执行了两次,则可能会对用户的钱包造成错误的更改。