-4

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

4

1 回答 1

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);
}

我实际上并不理解做这样的事情的意义,但答案是......一个答案:)

于 2013-01-15T16:17:32.773 回答