如何从2个单独的线程同步打印奇数和偶数

时间:2013-01-15 16:08:42

标签: c++ multithreading winapi

我想在win32 C ++中以同步方式从2个独立的线程中打印奇数和偶数。我正在使用关键部分来实现它,但没有得到理想的结果。可以使用临界区来做到这一点。

1 个答案:

答案 0 :(得分:2)

我认为只能通过关键部分来完成,但这种方式并不明显。

// all in pseudocode:

mutex printMutex;
int printedOdd = 1;

//thread 1
int start = 1;
while(1) {
  lock (printMutex);
  if (printOdd == 1) {
    print ( start );
    start += 2;
    printedOdd = 0;
  } else {
    unlock (printMutex);
    yield();
    continue;
  }
  unlock (printMutex);
}

// thread 2
int start = 2;
while(1) {
  lock (printMutex);
  if (printOdd == 0) {
    print ( start );
    start += 2;
    printedOdd = 1;
  } else {
    unlock (printMutex);
    yield();
    continue;
  }
  unlock (printMutex);
}

我实际上并不明白做这样的事情的意义,但答案是......答案:)