There may be the case that the first value = 0, the second = 10.
Thread 1 holds 3, thread 2 holds 5. They both intend to insert.
The list thread 1 observes can be 0->3->10
The list thread 2 observes can be 0->5->10
This comment was marked helpful 0 times.
pd43
More specifically, thread 1 enters the conditional in the while loop, runs the 'prev->next = n' and the 0 node points to 3. Then thread 2 also enters the conditional and the 0 node points to 5. Then both the 3 and 5 nodes point to 10, resulting in:
There may be the case that the first value = 0, the second = 10.
Thread 1 holds 3, thread 2 holds 5. They both intend to insert.
The list thread 1 observes can be 0->3->10
The list thread 2 observes can be 0->5->10
This comment was marked helpful 0 times.
More specifically, thread 1 enters the conditional in the while loop, runs the 'prev->next = n' and the 0 node points to 3. Then thread 2 also enters the conditional and the 0 node points to 5. Then both the 3 and 5 nodes point to 10, resulting in:
0 -> 5 -> 10
_____3 -> 10
This comment was marked helpful 0 times.