linux C语言系统编程多线程学习实例
一、测试C语言代码
/*
* multiple_thread.c : c multiple thread programming in linux
*author : weifanghai
*time : 2017/12/6
*/
#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
void *thread1()
{
int number=0, i;
printf ("thread1 : I'm thread 1\n");
pthread_mutex_lock(&mut);
for (i = 0; i < MAX; i++)
{
printf("thread1 : number = %d\n",number);
number++;
sleep(1);
}
pthread_mutex_unlock(&mut);
printf("thread1, are you waiting for me , main function?\n");
pthread_exit(NULL);
}
void *thread2()
{
int number=0, i;
printf("thread2 : I'm thread 2\n");
pthread_mutex_lock(&mut);
for (i = 0; i < MAX; i++)
{
printf("thread2 : number = %d\n",number);
number++;
sleep(1);
}
pthread_mutex_unlock(&mut);
printf("thread2, are you waiting for me , main function?\n");
pthread_exit(NULL);
}
void thread_create(void)
{
int temp;
memset(&thread, 0, sizeof(thread)); //comment1
/*创建线程*/
if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2
printf("failed to create thread1!\n");
else
printf("success to create thread1!\n");
if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
printf("failed to create thread2!");
else
printf("success to create thread2!\n");
}
void thread_wait(void)
{
/*等待线程结束*/
if(thread[0] !=0)
{ //comment4
pthread_join(thread[0],NULL);
printf("thread1 all done!\n");
}
if(thread[1] !=0)
{
//comment5
pthread_join(thread[1],NULL);
printf("thread2 all done!\n");
}
}
int main()
{
/*用默认属性初始化互斥锁*/
printf("start!\n");
pthread_mutex_init(&mut,NULL);
printf("I am main function, I am creating threads now!\n");
thread_create();
printf("I am main function, I am waiting all threads have been done completely!\n");
thread_wait();
return 0;
}
二、执行结果