在posix编程中,如果在不同的线程中几乎同一时间操作同一个变量的时候,就会出现不同步。
如何解决这样的问题,这里需要用到互斥量,互斥锁的概念。请看UNIX环境高级编程P299页
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
//线程1
void *thread_func1(void *arg);
//线程2
void *thread_func2(void *arg);
pthread_mutex_t lock ;
int count = 0 ;
int main(void)
{
pthread_t tid1,tid2 ;
pthread_create(&tid1 , NULL , thread_func1 , 0);
pthread_create(&tid2 , NULL , thread_func2 , 0);
//互斥锁初始化
pthread_mutex_init(&lock , NULL);
count = 0 ;
while(1)
{
//加锁
pthread_mutex_lock(&lock);
sleep(1);
printf("count:%d\n",count);
//解锁
pthread_mutex_unlock(&lock);
}
return 0 ;
}
void *thread_func1(void *arg)
{
while(1)
{
pthread_mutex_lock(&lock);
// sleep(1);
count++ ;
pthread_mutex_unlock(&lock);
}
}
void *thread_func2(void *arg)
{
while(1)
{
pthread_mutex_lock(&lock);
// sleep(1);
count++ ;
pthread_mutex_unlock(&lock);
}
}