📄 testpthread2.c
字号:
/*
多线程设计 2
作者:ddxxkk
线程的调用 互斥体
一个线程使用了pthread_mutex_lock(&mutexn);
另一线程使用pthread_mutex_lock(&mutexn);
要等到原程序用pthread_mutex_unlock(&mutexn);
程序名为 testt.c
在编译时一定要有 -lpthread
cc -lpthread -o testt testt.c
*/
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutexn; //定义互斥体
void add_a(void *arg)
{
int n,*inton;
inton = (int *) arg;
pthread_mutex_lock(&mutexn);
for (n=1;n<10;n++)
{
printf("add %d \n",n);
sleep(1);
*inton=*inton+2;
}
pthread_mutex_unlock(&mutexn);
// printf("%s \n ", message);
}
void dec_a(void *arg)
{
int n,nn,*inton;
pthread_t id;
id=pthread_self();
inton = (int *) arg;
pthread_mutex_lock(&mutexn);
for (n=1;n<10;n++)
{
printf("dev %d \n",n);
sleep(1);
*inton=*inton-1;
}
pthread_mutex_unlock(&mutexn);
// printf("%s \n ", message);
}
int main()
{
pthread_t threadid[1];
int n0=100000;
pthread_mutex_init(&mutexn,NULL);
printf(" Begin \n");
pthread_create(&threadid[0],NULL,(void *)&add_a,(int *)&n0);
pthread_create(&threadid[1],NULL,(void *)&dec_a,(int *)&n0);
printf(" end \n");
// sleep(10);
// 等线程结束 pthread_join(thread id)
pthread_join(threadid[0],NULL);
pthread_join(threadid[1],NULL);
printf(" now n0=%d \n",n0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -