linux C语言系统编程多线程学习实例

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;
}

二、执行结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值