2 points
1 point
I’m not familiar with their implementation but they’ll likely have one of those mechanisms under the hood.
You can only avoid them in very simple cases that don’t really scale up to a large number of threads in most cases. The one exception that does scale well is large amounts of data that can be processed independently of the rest of the data and the results are also independent. 3D rendering is one example, though some effects can create dependencies.