-4

win32C++で同期して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 に答える