zoukankan      html  css  js  c++  java
  • 指针的好处

    #include <pthread.h>  
    #include <stdio.h>  
    #include <sys/time.h>  
    #include <string.h>
    #include <stdlib.h>  
    #define MAX 10  
    pthread_t thread[2];  
    pthread_mutex_t mut;  
    int number=0, i;  
    struct parameter{
     char* fd;
     int hit;
    };
    void *threadd(void* data)  
    {  
            struct parameter *p;
            p=(struct parameter*)data;
            int fd=p->fd;
            int hit=p->hit;
            printf ("thread : I'm thread %d,%d
    ",fd,hit);  
             while(i<MAX){
                  //  printf("thread%d : number = %d
    ",threadNum,number);  
                    pthread_mutex_lock(&mut); 
                    printf("thread%d : number = %d,i = %d
    ",fd,number,i); 
                            number++;  
                    printf("thread%d : number = %d,i = %d
    ",fd,number,i);
                    i++;
                    pthread_mutex_unlock(&mut); 
                   sleep(1); 
           }   
            printf("thread%d :主函数在等我完成任务吗?
    ",fd);  
            free(p);
            pthread_exit(NULL);  
    }
    void thread_create(void)  
    {  
            int temp;  
            memset(&thread, 0, sizeof(thread));            
            /*创建线程*/ 

           //struct parameter p;
            // p.fd=555;
            // p.hit=666       

     struct parameter*pptr=malloc(sizeof(struct parameter));

            pptr->fd="555";
            pptr->hit=666;
           if((temp = pthread_create(&thread[0], NULL, threadd, pptr)) != 0)//pthread_create函数和主进程不是按顺序执行,因此若用p而不是pptr为threadd传递参数
                                                                             //会导致thread_create函数(是自定义的函数,不是pthread_create函数)执行到大括号而结束,而此时pthread_create函数还没有执行完,而使得p中的值失效。
    printf("线程1创建失败! "); else printf("线程1被创建 "); struct parameter*qptr=malloc(sizeof(struct parameter)); qptr->fd="777"; qptr->hit=888; if((temp = pthread_create(&thread[1], NULL, threadd, qptr)) != 0) printf("线程2创建失败"); else printf("线程2被创建 "); // sleep(3); } void thread_wait(void) { /*等待线程结束*/ if(thread[0] !=0) { pthread_join(thread[0],NULL); printf("线程1已经结束 "); } if(thread[1] !=0) { pthread_join(thread[1],NULL); printf("线程2已经结束 "); } } int main() { /*用默认属性初始化互斥锁*/ pthread_mutex_init(&mut,NULL); printf("我是主函数哦,我正在创建线程,呵呵 "); thread_create(); printf("我是主函数哦,我正在等待线程完成任务阿,呵呵 "); thread_wait(); return 0; }
  • 相关阅读:
    Javascript-DOM笔记
    JavaScript面向切面编程入门
    JavaScript面向对象编程入门
    AngularJS入门笔记
    Windows 安装 mysql-5.7.12-winx64(CommunityServer) 备忘
    PowerDesigner 16.5 链接SQL Server 2008R2
    C# GDI
    C# I/O
    Aspose.Words CookieBook
    EasyUI datagrid 多条件查询
  • 原文地址:https://www.cnblogs.com/dfyz/p/7004044.html
Copyright © 2011-2022 走看看