多线程如何传递多个参数
HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,DWORDdwStackSize,LPTHREAD_...
HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter, DWORD dwCreationFlags,LPDWORD lpThreadId);
函数的原格式
现在想写个函数,CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)nextline,(-------),0,ThreadID);
其中(-------)只能传递一个参数,但是我的函数nextline是有多个参数的,请问要怎么写代码
我的nextline函数是有int返回值的 展开
函数的原格式
现在想写个函数,CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)nextline,(-------),0,ThreadID);
其中(-------)只能传递一个参数,但是我的函数nextline是有多个参数的,请问要怎么写代码
我的nextline函数是有int返回值的 展开
5个回答
展开全部
将参数放入结构体
例如:
struct someS
{
// 要传递的参数
};
someS *ss = new someS;
// 然后对参数进行赋值
// 传递这些参数
CreateThread(……,……,……,(LPVOID)ss,……,……);
例如:
struct someS
{
// 要传递的参数
};
someS *ss = new someS;
// 然后对参数进行赋值
// 传递这些参数
CreateThread(……,……,……,(LPVOID)ss,……,……);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程传递多个参数可以通过以下方法来实现
typedef struct
{
void *arg1;
void *arg2;
//加个 semaphore;
} ARG;
void func(void * arg1, void * arg2)
{
ARG a;
a.arg1 = arg1;
a.arg2 = arg2;
//初始化a.semaphore = 0;
pthread_create(&tid, routine, NULL, &a);
//wait a.semaphore
}
void* routine(void* arg)
{
ARG* a = (ARG *)arg;
void* arg1 = a->arg1;
void* arg2 = a->arg2;
//post a.semaphore
}
参数表又称形式参数表,它包含有任意多个(含0个,即没有)参数说明项,当多于一个时其前后两个参数说明项之间必须用逗号分开。
每个参数说明项由一种已定义的数据类型和一个变量标识符组成,该变量标识符称为该函数的形式参数,简称形参,形参前面给出的数据类型称为该形参的类型。一个函数定义中的<参数表>可以被省略,表明该函数为无参函数,若<参数表>用void取代,则也表明是无参函数,若<参数表>不为空,同时又不是保留字void,则称为带参函数。
typedef struct
{
void *arg1;
void *arg2;
//加个 semaphore;
} ARG;
void func(void * arg1, void * arg2)
{
ARG a;
a.arg1 = arg1;
a.arg2 = arg2;
//初始化a.semaphore = 0;
pthread_create(&tid, routine, NULL, &a);
//wait a.semaphore
}
void* routine(void* arg)
{
ARG* a = (ARG *)arg;
void* arg1 = a->arg1;
void* arg2 = a->arg2;
//post a.semaphore
}
参数表又称形式参数表,它包含有任意多个(含0个,即没有)参数说明项,当多于一个时其前后两个参数说明项之间必须用逗号分开。
每个参数说明项由一种已定义的数据类型和一个变量标识符组成,该变量标识符称为该函数的形式参数,简称形参,形参前面给出的数据类型称为该形参的类型。一个函数定义中的<参数表>可以被省略,表明该函数为无参函数,若<参数表>用void取代,则也表明是无参函数,若<参数表>不为空,同时又不是保留字void,则称为带参函数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传参数:
http://zhidao.baidu.com/question/112758140.html
返回值:
线程的返回值最好用全局变量,如果是进程间,就用事件机制。如果线程按照你预期的方式运行直到结束的话,返回值就是你的return 的值,如果出现意外情况,你的线程意外终止,这个值就难以预料了。
http://zhidao.baidu.com/question/112758140.html
返回值:
线程的返回值最好用全局变量,如果是进程间,就用事件机制。如果线程按照你预期的方式运行直到结束的话,返回值就是你的return 的值,如果出现意外情况,你的线程意外终止,这个值就难以预料了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传结构体的指针啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发错了,以为是c#
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询