A-A+
如果想让该程序始终输出同一结果 并且Threadl和Thread2可以以任意次序进入临界区。
问题详情
如果想让该程序始终输出同一结果,并且Threadl和Thread2可以以任意次序进入临界区。请修改下述程序使其满足该要求。 intCOtInt=10: SemaphoreLock=1; Thread1(…){ while(1){//d0something L0ck.Wait(); Count++: L0ck.Signal(); } } Threa(12(…){ while(1){//d0something Lock.Wait(); Count一一: Lock.Signal(); } } } } Thread3(…){ w11ile(1){//do)s0Inething Lock,Wait(); printf(“%d”,count); Lock.Signal(); }请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:如果希望Thread1和Thread2可以以任意序列进入临界区应该把无限循环设置在主程序中线程中取消无限循环。修改:while(1){//任意的调用次序Threadl(){//dosoreethingL0ck.Wait();C0unt一一:L0ck.Signal();}thread2(){//d0somethingL0ck.Wait();COHnt一一:Lock.Signal();}}