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;

}

 

 

 

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

相关文章推荐

pthread_create是UNIX环境创建线程函数

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

pthread_create()创建线程最大个数

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

pthread_create()给创建的线程传递参数

对于pthread_create为创建线程传递参数的问题,先前只知道传递单个参数的方法,现在需要传递多个参数。     对于新手的我比较纠结,因此,上网查找资料,发现CU里面的一个帖...

pthread_create函数的详细讲解(包括向线程函数传递参数详解)

转载自:http://blog.csdn.net/liangxanhai/article/details/7767430 pthread_create是UNIX环境创建线程函数 头文件...

pthread_create函数的详细讲解(包括向线程函数传递参数详解)

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

linux c之使用pthread_create创建线程pthread_join等待线程和pthread_exit终止线程总结

1、介绍API 1、pthread_create函数 函数简介 pthread_create是UNIX环境创建线程函数 头文件 #include 函数声明 int pthread_create(pt...

pthread创建线程及遇到问题解决

出现的错误:invalid conversion from `void*' to `void*(*)(void*) 原来是定义的void reader_function(); pthread_cr...

kthread_create创建线程

kthread_create创建线程1 使用kthread_create创建线程:struct task_struct *kthread_create(int (*threadfn)(void *da...

kthread_create创建线程 (转载)

kthread_create创建线程 (转载)

Pthread创建线程后必须使用join或detach释放线程资源

Pthread 资料中,有这么一段话: (man pthread_detach): Either pthread_join(3) or pthread_detach() should be...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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