Такие языки, как Swift, Vala и C ++ (через shared_ptr) управляют памятью путем подсчета ссылок.Насколько мне известно, обновления счетчика ссылок в этих системах выполняются атомарно и, таким образом, потокобезопасны.
Однако каждый раз, когда ссылка / указатель переназначается, для предыдущего объекта ссылки требуется уменьшение счетчика ссылок,новый объект ссылается на инкремент ссылки, и, наконец, сама ссылка должна быть переназначена.Поэтому, если одна и та же ссылка доступна из нескольких потоков (т. Е. Через глобальную переменную) и переназначается несколькими потоками одновременно, подсчет ссылок может стать искаженным.
Так же, как и общие указатели C ++, ссылки Vala, Swiftссылки предпринять шаги, чтобы избежать таких проблем?Если нет, какие шаги необходимы на каждом из трех языков, чтобы сделать такой доступ безопасным?
Любые идеи приветствуются.Спасибо!