-
- static void StealerThread(int index) {
- while (!terminate_stealer.load(memory_order_relaxed)) {
- int res = deque->steal();
- if (res != EMPTY && res != ABORT) {
- sums[index] += res;
- succ_counts[index]++;
- }
- }
- }
-
- static void MainThread(int index, int push_percentage) {
- for (ullong i = 0; i < s_nDequeMainPassCount; i++) {
- if ((::rand() % 100) < push_percentage) {
- int item = ::rand() % 100;
- deque->push(item);
- push_sum += item;
- push_count++;
- } else {
- int res = deque->take();
- if (res != EMPTY) {
- sums[index] += res;
- succ_counts[index]++;
- }
- }
- }
- while (true) {
- int res = deque->take();
- if (res != EMPTY) {
- sums[index] += res;
- succ_counts[index]++;
- } else {
- break;
- }
- }
- }