⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testpthread2.c

📁 linux c 多线线程在此源码中应用了锁的同步
💻 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 + -