apiID, amount, recipient
перед выполненем проверяется бланс api по apiID
Проблема в том, что при большом количестве запросов, функция проверки баланса может вернуть не верный баланс. Например, когда пришло пять запросов на перевод одновременно, и данные для подсчета баланса еще не изменились.
Самый просто вариант - это поставить mutex на функцию перевода, но тогда эта функция будет блокироваться для тех для кого не должа, так как у каждго api свой баланс.
Попробовал сделать `map[int]sync.Mutex`, где ключ - это apiID, но так не работает.
Как лучше реализовать, чтобы функция блокировалась в контексте apiID, а не для всех? Под «блокировалась» я подрозумеваю не выполнялась в многопотоке.
сделать свою структуру с мутексом и блокировать только ее хранить в мапе по указателю
на сколько я понял ему блокировка по ключам в мапе нужна
Спасибо. А почему по укзателю?
потому что нельзя ссылаться на элементы мапы
Обсуждают сегодня