整个程序并没有体现出对共享资源锁的保护使用,只是个简单的例子,原理完全正确,但由于简单,CPU运行一定会安想的执行,因此不加锁结果也相同。主要目的是演示如何创建线程,如何创建mutex实现共享锁。代码如下:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
int resource = 0;
pthread_mutex_t mutex;
void handle()
{
int i;
for(i = 0; i < 10; i++)
{
pthread_mutex_lock(&mutex);
resource++;
pthread_mutex_unlock(&mutex);
sleep(1);
}
}
int main()
{
pthread_t id;
int i ;
int ret;
ret = pthread_mutex_init(&mutex,NULL);
if(ret != 0)
{
printf("创建共享锁失败!/n");
exit(1);
}
ret = pthread_create(&id,NULL,(void *)handle,NULL);
if(ret != 0)
{
printf("创建线程出错!/n");
exit(1);
}
for(i = 0; i < 10; i++)
{
pthread_mutex_lock(&mutex);
printf("%d/n",resource);
pthread_mutex_unlock(&mutex);
sleep(2);
}
pthread_join(id,NULL);
pthread_mutex_destroy(&mutex);
return (0);
}