What Happens If Two Dart Asynchronous Functions Try To Add To The Same List Concurrently?
Does dart handle the case in which two different calls of an asynchronous function try to add two (or more) objects to a List at the same time? If it does not is there a way for me to handle this?
I do not need those two new objects to be inserted in a particular order because I take care of that later on, I only wandered what happens in that unlikely but still possible case
Answer
If you're wondering if there's any kind of locking necessary to prevent race conditions in the List
data structure itself, no. As pskink noted in a comment, each Dart isolate runs in its own thread, and as the "isolate" name implies, memory is not shared. Two operations therefore cannot both be actively updating a List
at the same time. Once all asynchronous operations complete, your List
will contain all of the added items but not with any guaranteed ordering.
If you need to prevent asynchronous operations from being interleaved, you could use package:pool
.
Related Questions
- → Redux: Using async middlewares vs dispatching actions on success functions
- → Async data retrieval via input box is one step behind
- → How to use request within async.each in node.js Express
- → Node.js Callback manipulation check
- → Moving a DOM element item out of a react js component
- → Passing asynchronously acquired data to child props
- → async parallel of API call with callback in node.js
- → react native : render function not being called after state change
- → What is the purpose of Redux Async Action Testing?
- → Googlemaps listener loading fine in firefox but not in other browsers
- → Why do we need middleware for async flow in Redux?
- → How to make learnyounode #9 juggling async work
- → Where and How to request data asynchronously to be passed down as props with React Router (v 1)