- int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
- 创建锁
- int pthread_mutex_destroy(pthread_mutex_t *mutex);
- 销毁锁
- int pthread_mutex_lock(pthread_mutex_t *mutex);
- 加锁
- int pthread_mutex_unlock(pthread_mutex_t *mutex);
- 解锁
#include <stdio.h>
#include <pthread.h>pthread_mutex_t mutex;
void *func1(void *arm)
{
pthread_mutex_lock(&mutex);printf("t1:%ld this is creat\n",(unsigned long)pthread_self());
printf("t1:pram is %d\n",*((int *)arm));pthread_mutex_unlock(&mutex);
}void *func2(void *arm)
{
pthread_mutex_lock(&mutex); //加锁printf("t2:%ld this is creat\n",(unsigned long)pthread_self());
printf("t2:pram is %d\n",*((int *)arm));pthread_mutex_unlock(&mutex); //解锁
}
int main()
{int ret;
pthread_t t1;
pthread_t t2;
int pram = 100;pthread_mutex_init(&mutex,NULL);
创建的锁,属性NULL
函数名,传递给函数的参数
ret = pthread_create(&t1,NULL,func1,(void *)&pram);
创建线程名,属性NULL
if(ret == 0){
printf("main:creat t1 success\n");
}ret = pthread_create(&t2,NULL,func2,(void *)&pram);
if(ret == 0){
printf("main:creat t2 success\n");
}printf("main:%ld\n",(unsigned long)pthread_self());
pthread_join(t1,NULL); //线程等待函数,防止主函数提前退出,使线程没运行。
pthread_join(t2,NULL); //使这个函数的线程阻塞,直到指定线程调用pthread_exit,或无返回值NULL, // 该线程结束后退出程序。pthread_mutex_destroy(&mutex); //销毁锁
return 0;
}