Linux下多线程编程学习

在windows下已经基本上能够实现多线程了。接下来进行linux端的探索,结合网上的代码进行了一定的修改。
下一步进行的计划就是把FjBeater客户端在linux下进行移植。
再下一步计划,就是写出能够双平台编译的通用代码。

Linux下多线程编程学习

  
#include<pthread.h>
#include<stdio.h>
#include<string.h> // for memset function
#include<unistd.h> // for sleep() function
#define MAX 10

 

pthread_t thread[2];
pthread_mutex_t mut;
int number=0,i;

 

void *thread1(void* a){
    printf("thread1: I'm thread 1\n");
    for(i=0;i<MAX;i++){
        printf( "thread1: number=%d\n" ,number );
        pthread_mutex_lock(&mut);
            number++;
        pthread_mutex_unlock(&mut);
        sleep(2);
    }
    printf( "thread1: is it the main thread waiting for me to finish?\n" );
    pthread_exit(NULL);
}

 

void *thread2(void* a){
    printf( "thread2: I'm thread 2\n" );
    for(i=0;i<MAX;i++){
        printf( "thread2: number=%d\n" ,number);
        pthread_mutex_lock(&mut);
            number++;
        pthread_mutex_unlock(&mut);
        sleep(3);
    }
    printf( "thread2: is it the main thread waiting for me to finish?\n" );
    pthread_exit(NULL);
}

 

void thread_create(void){
    int temp;
    memset(&thread,0,sizeof(thread));
    if( (temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0 ){
        printf( "thread1 create failure!\n" );
    }else{
        printf( "thread1 has been create!\n" );
    }

    if( (temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0 ){
        printf( "thread2 create failure!\n" );
    }else{
        printf( "thread2 has been create!\n" );
    }
}

 

void thread_wait(void){
    if(thread[0]!=0){
        pthread_join(thread[0],NULL);
        printf( "thread1 has been stop.\n" );
    }
    if(thread[1]!=0){
        pthread_join(thread[1],NULL);
        printf( "thread2 has been stop.\n" );
    }
}


int main(){
    pthread_mutex_init(&mut, NULL);
    printf( "I'm main thread! Creating sub-thread now.\n" );
    thread_create();
    printf( "I'm main thread! Waiting for sub-thread stop.\n" );
    thread_wait();
   
    return 0;
}
  
 

 


 

 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值