我有一个简单的程序,你可以在下面找到。问题是两个线程是否可以在给定以下设置的情况下并行运行:
1.一个核心处理器,
2.两个核心处理器,
3.两个核心处理器。
该计划是否存在竞赛风险?
这是我迄今为止所发现的:
1.一个核心处理器 - 技术上线程不是并行运行的,它们只是这样,因为CPU在它们之间切换非常快
2.两个核心处理器 - 可以并行(同时)运行的线程数等于核心数,因此是,在这种情况下,2个线程可以并行运行。
3.两个核心处理器??
L1:全球
int t1_next=1;
int t2_next=0;
L2:线程1
while(1) {
if(t1_next){
printf("a");
printf("b");
printf("c");
printf("d");
t1_next=0;
t2_next=1;}
else sleep(10);
}
L3:线程2
while(1) {
if(t2_next){
printf("e");
printf("f");
printf("g");
printf("h");
t1_next=1;
t2_next=0;}
else sleep(10);
}