- // Recursive locking, lock current split point and its ancestors to
- // guarantee thread_should_stop() and sp_update_pv() are race free.
- SplitPoint* spChain[MAX_THREADS * ACTIVE_SPLIT_POINTS_MAX];
- int cnt = 0;
- for (spChain[cnt] = sp; spChain[cnt]; )
- {
- lock_grab(&(spChain[cnt++]->lock));
- spChain[cnt] = spChain[cnt - 1]->parent;
- }
-