使用结构体
通过结构体传递多个参数到线程函数中,创建一个结构体并将其作为参数传递给线程函数。
#include<stdio.h>
#include<Windows.h>
typedef struct
{
const char arg1[100];
const char arg2[100];
}ThreadArgs;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
ThreadArgs* myArgs = (ThreadArgs*)lpParam;
printf("%s %s", myArgs->arg1, myArgs->arg2);
return 0;
}
int main()
{
ThreadArgs str = { 0 };
strcpy(str.arg1, "Hello");
strcpy(str.arg2, ",World!");
HANDLE thread = CreateThread(NULL, 0, ThreadProc, &str, 0, 0);
WaitForSingleObject(thread, -1);
return 0;
}
运行结果
通过指针在内存中存储和读取数据
#include<stdio.h>
#include<Windows.h>
typedef struct ThreadArgs
{
const char arg1[100];
const char arg2[100];
}ThreadArgs;
DWORD WINAPI ThreadProc(LPVOID lpParam) {
char* data = (char*)lpParam;
printf("%s\n", data);
data = (char*)data + strlen(data) + 1;
printf("%s\n", data);
return 0;
}
int main()
{
struct ThreadArgs str = { 0 };
strcpy(str.arg1, "Hello");
strcpy(str.arg2, ",World!");
char data[] = { 'F','i','r','s','t','\0','S','e','c','o','n','d','\0' };
char* First = data;
char* Second = First + strlen(First) + 1;
printf("%s\n", First);
printf("%s\n", Second);
HANDLE thread = CreateThread(NULL, 0, ThreadProc, First, 0, 0);
WaitForSingleObject(thread, -1);
return 0;
}
运行结果