我想在win32 C ++中以同步方式从2个独立的线程中打印奇数和偶数。我正在使用关键部分来实现它,但没有得到理想的结果。可以使用临界区来做到这一点。
答案 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);
}
我实际上并不明白做这样的事情的意义,但答案是......答案:)