手机
当前位置:查字典教程网 >编程开发 >C语言 >linux c多线程编程实例代码
linux c多线程编程实例代码
摘要:直接看代码吧,代码里有注释复制代码代码如下:#include#include#include#include#include#defineM...

直接看代码吧,代码里有注释

复制代码 代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <pthread.h>

#include <time.h>

#define MAX 3

int number =0;

pthread_t id[2];

pthread_mutex_t mut; //初始化静态互斥锁

void thread1(void)

{

int i;

printf("Hello,I am pthread1!n");

for (i=0; i<MAX; i++)

{

pthread_mutex_lock(&mut); //此处上锁,保证number的唯一性

number ++;

printf("Thread1:number = %dn",number);

pthread_mutex_unlock(&mut);

sleep(1); //linux c下 sleep(minute),里面变量单位是分钟

}

pthread_exit(NULL); //线程通过执行此函数,终止执行。返回是一个空指针类型

}

void thread2(void)

{

int j;

printf("Hello,I'm pthread2n");

for(j=0; j<MAX; j++)

{

pthread_mutex_lock(&mut);

number ++;

printf("Thread2:number = %dn",number);

pthread_mutex_unlock(&mut);

sleep(1);

}

pthread_exit(NULL);

}

void thread_create(void)

{

int temp;

memset(&id, 0, sizeof(id));

if(temp = pthread_create(&id[0], NULL, (void *)thread1, NULL)!= 0)

//参数:线程标识符指针 线程属性 线程运行函数起始地址 运行函数属性

//创建成功返回 0

printf("Thread 1 fail to create!n");

else

printf("Thread 1 createdn");

if(temp = pthread_create(&id[1], NULL, (void *)thread2, NULL)!= 0)

printf("Thread 2 fail to create!n");

else

printf("Thread 2 created!n");

}

void thread_wait()

{

if(id[0] != 0)

{

pthread_join(id[0], NULL); //等待线程结束,使用此函数对创建的线程资源回收

printf("Thread1 completed!n");

}

if(id[1] != 0)

{

pthread_join(id[1], NULL);

printf("Thread2 completed!n");

}

}

int main(void)

{

int i,ret1,ret2;

pthread_mutex_init(&mut, NULL); //动态互斥锁

printf("Main fuction,creating thread...n");

thread_create();

printf("Main fuction, waiting for the pthread end!n");

thread_wait();

return (0);

}

【linux c多线程编程实例代码】相关文章:

解析四则表达式的编译过程及生成汇编代码

C++ 十进制转换为二进制的实例代码

用C++实现队列的程序代码

8皇后问题的解法实例代码

Linux系统中C语言编程创建函数fork()执行解析

c语言全盘搜索指定文件的实例代码

C++实现:螺旋矩阵的实例代码

C/C++实现矩阵的转置(示例代码)

C实现分子沉积模拟的示例代码

基于C程序启动代码的深入分析

精品推荐
分类导航