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


  • 相关阅读:
    python写的百度贴吧相册下载
    C#的图片拼接
    删除目录下的所有".svn"文件
    centOS 6.5 yum升级 gcc4.8 然后又退回来4.4
    代理的分类简述特点
    GCC 特性整理
    纯C 实现 strpos substr strspilt str_trim
    编译putty 源码去掉 Are you sure you want to close this session? 提示
    OpenWrt tcpdump 抓包
    安卓 打飞机 app 开发 第一篇
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124397.html
Copyright © 2011-2022 走看看