#include<unistd.h>
#include<pthread.h>
#include<iostream>
void *f(void *p){
int a=1000000000;
while (a--)
{
(*(int*) p)++;
}
};
int main(){
pthread_t p1,p2;
static int a=1;
pthread_create(&p1,nullptr,f,&a);
pthread_create(&p2,nullptr,f,&a);
pthread_detach(p1);
pthread_detach(p2);
std::cout<<a;
}
原则上最后应该输出2000000001,实际上输出127561。因为有的没有来得及写回。
体现线程一致性问题的一个小例子
最新推荐文章于 2024-06-09 20:18:37 发布