多线程如何传递多个参数

来源:百度知道 编辑:UC知道 时间:2024/06/21 20:03:35
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返回值的

多线程传递多个参数可以通过以下方法来实现
  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,则称为带参函数。

将参数放入结构体
例如:
struct someS
{
// 要传递的参数
};

someS *ss = new someS;
// 然后对参数进行赋值

// 传递这些参数
CreateThread(…