当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux教程

解析Linux中多线程编程并传递多个参数

文章标题:解析Linux中多线程编程并传递多个参数。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
    Linux中多线程编程并传递多个参数实例是本文讲解的内容,不多说,先来看内容。今天上午实验了Linux下的多线程编程,并将多个参数传递给线程要执行的函数。在Linux环境下编译通过后,还将它移到了Android的模拟器中。
    以下是实验程序的源代码:
    pthread.c
    #include
    #include
    #include
    #include
    #include
    struct argument
    {
    int num;
    char string[30];
    };
    int main()
    {
    int i,ret;
    void *thread1_func(void *);
    void *thread2_func(void *);
    void *thread_return1,*thread_return2;/*用来接收两个线程退出后的返回值*/
    pthread_t thread1,thread2;
    struct argument arg1,arg2;
    arg1.num=1949;
    strcpy(arg1.string,"中华人民共和国成立");
    arg2.num=2009;
    strcpy(arg2.string,"建国六十周年");
    pthread_create(&thread1,NULL,thread1_func,(void *)&arg1);
    pthread_create(&thread2,NULL,thread2_func,(void *)&arg2);
    for(i=0;i<=2;i++)
    {
    printf("我是最初的进程!\n");
    sleep(2);
    }
    ret=pthread_join(thread1,&thread_return1);/*等待第一个线程退出,并接收它的返回值*/
    if(ret!=0)
    printf("调用pthread_join获取线程1返回值出现错误!\n");
    else
    printf("pthread_join调用成功!线程1退出后带回的值是%d\n",(int)thread_return1);
    ret=pthread_join(thread2,&thread_return2);/*等待第二个线程退出,并接收它的返回值*/
    if(ret!=0)
    printf("调用pthread_join获取线程2返回值出现错误!\n");
    else
    printf("pthread_join调用成功!线程2退出后带回的值是%d\n",(int)thread_return2);
    return 0;  }  void *thread1_func(void *arg)
    {
    int i;
    struct argument *arg_thread1;/*这里定义了一个指向argument类型结构体的指针arg_thread1,用它来接收传过来的参数的地址*/
    arg_thread1=(struct argument *)arg;
    for(i=0;i<=3;i++)
    {
    printf("我来自线程1,传递给我的参数是%d,%s。\n",(*arg_thread1)。num,(*arg_thread1)。string);
    sleep(2);
    }
    return (void *)123;  }
    void *thread2_func(void *arg)
    {
    int i;
    struct argument arg_thread2;/*这里定义了一个argument类型的结构体arg_thread2,用来接收传过来的指针参数指向的值。                                                                                  这种方法和thread1_func函数中的方法都是可行的*/
    arg_thread2=*(struct argument *)arg;
    for(i=0;i<=3;i++)
    {
    printf("我来自线程2,传递给我的参数是%d,%s。\n",arg_thread2.num,arg_thread2.string);
    sleep(2);
    }
    return (void *)456;
    } 以上是 pthread.c 的内容

[1] [2] 下一页

吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有