Что произойдет, если две асинхронные функции dart попытаются добавить в один и тот же список одновременно? - PullRequest
0 голосов
/ 11 февраля 2020

Обрабатывает ли dart случай, когда два разных вызова асинхронной функции пытаются добавить два (или более) объекта в список одновременно? Если у меня нет способа справиться с этим?

Мне не нужно, чтобы эти два новых объекта были вставлены в определенном порядке, потому что я позабочусь об этом позже, я только бродил, что происходит в это маловероятное, но все еще возможное дело

1 Ответ

0 голосов
/ 12 февраля 2020

Если вам интересно, есть ли какая-либо блокировка, необходимая для предотвращения состояния гонки в самой структуре данных List, нет. Как отметил pskink в комментарии , каждый Dart isolate работает в своем собственном потоке, и, как следует из названия «isolate», память не используется совместно. Поэтому две операции не могут одновременно активно обновлять List. После завершения всех асинхронных операций ваш List будет содержать все добавленные элементы, но без какого-либо гарантированного упорядочения.

Если вам нужно предотвратить чередование асинхронных операций, вы можете использовать package:pool .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...