Race condition 对于下面的竞争条件示例,为什么只有在某些环境中才会出现不一致的结果,而在某些其他环境中不会出现不一致的结果?
下面的代码是关于经典的生产者和消费者问题的,这里有一个竞争条件。当我在Windows 10的MinGW中运行这个示例时,我们有很大的可能性(例如,80%)得到不一致的结果。然而,当我在Ubuntu中运行它时,概率非常低 此外,当我在Java中运行类似的代码时,产生不一致结果的概率也非常高 那么,谁能解释一下背后的不同之处呢。我认为这是因为不同的调度机制和不同的时间片设置Race condition 对于下面的竞争条件示例,为什么只有在某些环境中才会出现不一致的结果,而在某些其他环境中不会出现不一致的结果?,race-condition,Race Condition,下面的代码是关于经典的生产者和消费者问题的,这里有一个竞争条件。当我在Windows 10的MinGW中运行这个示例时,我们有很大的可能性(例如,80%)得到不一致的结果。然而,当我在Ubuntu中运行它时,概率非常低 此外,当我在Java中运行类似的代码时,产生不一致结果的概率也非常高 那么,谁能解释一下背后的不同之处呢。我认为这是因为不同的调度机制和不同的时间片设置 #include <stdio.h> #include <pthread.h> int count =
#include <stdio.h>
#include <pthread.h>
int count = 0;
void *producer(){
for(int i = 0;i<10000;i++)
count++;
}
void *consumer() {
for(int i = 0;i<10000;i++)
count--;
}
int main(int argc, const char *argv[]){
printf("initial count: %d\n",count);
pthread_t t1, t2;
pthread_create(&t1, NULL, producer,NULL);
pthread_create(&t2, NULL, consumer,NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
printf("final count: %d\n",count);
return 0;
}
#包括
#包括
整数计数=0;
void*producer(){
for(int i=0;i相关:实际上它是不相关的。