【正确答案】
A、B、D
【答案解析】 本题中,两个线程运行在双核机器上,没有设置临界区,所以,无法保证执行的正确性,而线程1与线程2在执行的过程中,先后顺序是不可控的,可能存在着以下三种情况:
1)首先执行x=1,然后执行y=1,接着执行r1=y,即r1=1,最后执行r2=x,即r2=1。所以,r1=1,r2=1。因此,选项A正确。
2)首先执行y=1,然后执行r2=x,此时x的值为初始值0,所以,r2=0,接着执行x=1,最后执行r1=y,而y的值为1,所以,r1=1。因此,选项B正确。
3)首先执行x=1,然后执行r1=y,此时y的值为初始值0,所以,r1=0,接着执行y=1,最后执行r2=x,而x的值为1,所以,r2=1。因此,选项D正确。
所以,本题的答案为ABD。