我想在 win32 C++ 中以同步方式从 2 个单独的线程中打印奇数和偶数。我正在使用关键部分来实现它,但没有得到想要的结果。可以使用临界区来完成。
问问题
1603 次
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 回答