当前位置: 首页 > 编程语言 > C#

代码示例因无易失性共享而失败

时间:2023-04-10 12:34:49 C#

证书代码示例因无易失性而失败下面是一个C#代码示例,它是损坏的Java代码的逐字翻译(已被证明是损坏的(即第二个线程可能不是能够观察到sharedValue值的变化)至少在MacOSX10.9、Java1.8(64位)、Arrandale(1个插槽x2个内核x2个HT=4个硬件线程)上):使用系统;使用System.Threading;classThreadTest{/*volatile*/privateintsharedValue;privatevoidRunAsync(){while(this.sharedValue==0);}privateboolTest(){Threadt=newThread(this.RunAsync);t.IsBackground=真;t.开始();线程.睡眠(10);//是的,我知道这个操作不是原子的this.sharedValue++;t.加入(10);布尔成功=!t.IsAlive;如果(!成功){Console.Write('。');}返回成功;}staticvoidMain(){longfailureCount=0L;constlongtestCount=10000L;for(longi=0;i