C语言线程函数参数问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言线程函数参数问题相关的知识,希望对你有一定的参考价值。
C语言的线程就是异步调用一个函数,那么这个函数不能有参数,而且返回值也必须是void吗?如何将变量值传入,难道要用全局吗?
参考技术A ·线程创建函数原型:int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);
返回值:若是成功建立线程返回0,否则返回错误的编号。
形式参数:pthread_t *restrict tidp要创建的线程的线程id指针;
const pthread_attr_t *restrict attr创建线程时的线程属性;
void* (start_rtn)(void)返回值是void类型的指针函数;
void *restrict arg start_rtn的形参。 =====这个地方就可以传参数,
注意,这个地方是个指针,要想传多个参数,可以定义一个结构体,把要传的参数包起来,传结构体的地址就ok本回答被提问者采纳
(C语言)多线程beginthreadex的第四个参数(结构体)到底怎么设置才能正确传递数值
struct test
long b[NUM];
long lleft;
long rright;
;
unsigned __stdcall FirstThreadFunc(void*) //第一个线程函数,函数里调用fun函数进行排序
int left=first.lleft;
int right=first.rright;
fun(first.b,left,right);
hThread[0]=(HANDLE)_beginthreadex(NULL,0,FirstThreadFunc,&first,0,&threadID[0]);
上面我的写法会报错,肯定错的。
能不能帮忙改一下,正确的写法是什么,以及函数里怎么样正确的传递,还有第四个参数的设置。
不对,没有我要的结构体的传递办法
追答将一个long型指针指向结构体就行了啊
以上是关于C语言线程函数参数问题的主要内容,如果未能解决你的问题,请参考以下文章