zoukankan      html  css  js  c++  java
  • 多线程实例

     
    #include <pthread.h>
    #include <stdio.h>
    #include <sys/time.h>
    #include <string.h>
    #define MAX 10
    pthread_t thread[2];
    pthread_mutex_t mut;
    int number=0, i;
    void *thread1()
    {
            printf ("thread1 : I'm thread 1\n");
            for (i = 0; i < MAX; i++)
            {
                    printf("thread1 : number = %d\n",number);
                    pthread_mutex_lock(&mut);
    		printf("thread1 get mutex and operating num!\n");
                            number++;
                    pthread_mutex_unlock(&mut);
                    sleep(2);
            }
            printf("thread1 :主函数在等我完成任务吗?\n");
            pthread_exit(NULL);
    }
    void *thread2()
    {
            printf("thread2 : I'm thread 2\n");
            for (i = 0; i < MAX; i++)
            {
                    printf("thread2 : number = %d\n",number);
                    pthread_mutex_lock(&mut);
    		printf("thread2 get mutex and operating num\n");
                            number++;
                    pthread_mutex_unlock(&mut);
                    sleep(3);
            }
            printf("thread2 :主函数在等我完成任务吗?\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("线程1创建失败!\n");
            else
                    printf("线程1被创建\n");
            if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)  //comment3
                    printf("线程2创建失败");
            else
                    printf("线程2被创建\n");
    }
    void thread_wait(void)
    {
            /*等待线程结束*/
            if(thread[0] !=0) {                   //comment4
                    pthread_join(thread[0],NULL);
                    printf("线程1已经结束\n");
            }
            if(thread[1] !=0) {                //comment5
                    pthread_join(thread[1],NULL);
                    printf("线程2已经结束\n");
            }
    }
    int main()
    {
            /*用默认属性初始化互斥锁*/
            pthread_mutex_init(&mut,NULL);
            printf("我是主函数哦,我正在创建线程,呵呵\n");
            thread_create();
            printf("我是主函数哦,我正在等待线程完成任务阿,呵呵\n");
            thread_wait();
            return 0;
    }
    


  • 相关阅读:
    【代码笔记】iOS-GCD用法
    【代码笔记】iOS-DropDownDemo-下拉按钮效果
    【代码笔记】iOS-cell自动变化大小
    【代码笔记】iOS-cell折叠
    【代码笔记】iOS-archive保存图片到本地
    【代码笔记】iOS-左右可滑动的选择条
    【代码笔记】iOS-自动成表格的效果
    【代码笔记】iOS-自定义选择框
    【代码笔记】iOS-实现网络图片的异步加载和缓存
    【代码笔记】iOS-自定义开关
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124398.html
Copyright © 2011-2022 走看看