pthread_create()创建线程时传入多个参数

原创 2015年07月09日 18:45:47

由于接口只定义了一个入参void *arg

int pthread_create(pthread_t *tidp,const pthread_attr_t *attr, (void*)(*start_rtn)(void*),void *arg);


所以,如果想传参数,需要封装结构体,将多个参数通过一个结构体传入线程。

 

typedef struct
{
    FUNCPTR entry; /* 函数入口*/
    void *arg[10]; /* 参数*/
}FUNC;

void *start(void *arg)
{

    FUNC *func = NULL;

    (*(func->entry))(func->arg[0], func->arg[1], func->arg[2], func->arg[3], func->arg[4],
            func->arg[5], func->arg[6], func->arg[7], func->arg[8], func->arg[9]);
    return NULL;

}

int PTHREAD_CTREATE(pthread_t *tidp,const pthread_attr_t *attr, void *(*funcptr)(void *, void *, void *), unsigned args, ...)
{

    /* 构造函数集合的结构体 */

    FUNC function = {0};

    function.entry = funcptr;

    for (i = 0; i < args; i++)
    {
        func->arg[i] = arg[i];
    }

 

    //设置线程属性(略)

    pthread_create(NULL, &attr, start, (void *)&function);

    return 0;

}

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言pthread_create传递带多个参数的函数& pthread_join

pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数,头文件在pthread.h中。函数的声明如下:int pthread_create(pth...

pthread_create如何传递多个参数

pthread_create如何传递多个参数 分类: C语言2012-06-19 08:44 98人阅读 评论(0) 收藏 举报 http://zhidao.baidu.com...
  • jfkidear
  • jfkidear
  • 2012年08月29日 08:57
  • 12605

pthread_create传递参数/单个或者多个

linux 下常用的创建多线程函数pthread_create(pthread_t * thread , pthread_attr_t * attr , void *(*start_routine)(...

LeetCode_OJ【262】Trips and Users

The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b...
  • hb_peng
  • hb_peng
  • 2015年09月14日 09:49
  • 913

leetcode 128. Longest Consecutive Sequence

Given an unsorted array of integers, find the length of the longest consecutive elements sequence. ...

pthread_create()创建线程最大个数

线程应用程序最常见导致创建线程失败的原因是线程栈大小的设置。创建一个新的线程,默认情况下系统为线程栈预留了2MB的寻址空间。线程栈起始于进程虚拟 内存的高端地址,并向虚拟内存底端地址方向扩展。取决于线...
  • maopig
  • maopig
  • 2016年08月20日 16:00
  • 4605

pthread_create是UNIX环境创建线程函数

pthread_create是UNIX环境创建线程函数 头文件   #include 函数声明   int pthread_create(pthread_t*restrict tidp,con...

pthread_create()创建线程最大个数

线程应用程序最常见导致创建线程失败的原因是线程栈大小的设置。创建一个新的线程,默认情况下系统为线程栈预留了2MB的寻址空间。线程栈起始于进程虚拟 内存的高端地址,并向虚拟内存底端地址方向扩展。取决于线...

clone的fork与pthread_create创建线程有何不同&pthread多线程编程的学习小结

进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块、虚存空间、文件系统,文件I/O、信号处理函数。所以创建一个进程的 过程就...

pthread_key_create()--创建线程私有数据|pthread_key_delete()--注销线程私有数据

#include int pthread_key_create(pthread_key_t *key, void (*destructor)(void*)); int pthread_key_...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pthread_create()创建线程时传入多个参数
举报原因:
原因补充:

(最多只允许输入30个字)