文章类型: VC&C++
关键词: VC,线程,函数,如何,传递,多个参数,CreateThread,LPVOID
内容摘要: VC中线程函数如何传递多个参数

VC中线程函数如何传递多个参数

2017/12/13 13:20:34    来源:apple    阅读:

我用CreateThread创建线程,它的第三个参数是线程函数地址,规定了线程函数必须是DWORD WINAPI ...(LPVOID lpParam)形式的,只能有单个参数,但是我用CreateThread创建的时候需要向线程函数传两个integer和两个char*,我在CSDN上看到了用结构体,我建了一个结...

可以用结构体指针:先定义一个结构体,包含你要传递的参数,再把这个结构体的地址强制类型转换后传给CreateThread函数。

比如我的程序里的这句话:CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Process,&SockRec,0,NULL);

我就不用工程了,直接用控制台写个例子你,方法都通用:

#include "stdio.h"
#include "conio.h"
#include "windows.h"
typedef struct _THREADDATA
{
    int v1;
    int v2;
    char *pStr1;
    char *pStr2;
}*LPTHREADDATA, THREADDATA;

DWORD WINAPI ThreadProc(LPVOID lParam)
{
    LPTHREADDATA pData = (LPTHREADDATA)lParam;
    while (1)
    {
        printf("%d\t%d\t%s\t%s\n", pData->v1, pData->v2, pData->pStr1, pData->pStr2);
    }
    return 0;
}

int main()
{
    LPTHREADDATA pData = new THREADDATA;
    pData->v1 = 10;
    pData->v2 = 100;
    pData->pStr1 = "Hello";
    pData->pStr2 = "world";
    DWORD ThreadId;
    ::CreateThread(NULL, 0, ThreadProc, (LPVOID)pData, 0, &ThreadId);
    getch();
    return 0;
}
↑ 上一篇文章:Failed to load E:\SDK\android-sdk-windows\build-tools\26.0.1\lib\dx.jar 关键词:Failed,to,load,android-sdk-w.. 发布日期:2017/12/7 10:52:10
↓ 下一篇文章:盛大网络-最年轻的中国首富-陈氏兄弟 关键词:盛大网络,最年轻,中国首富,陈氏兄弟 发布日期:2017/12/14 14:20:30
相关文章:
一道迅雷多线程编程题 关键词:MFC,多线程,C++,VC,编程题,面试,mfc编程 发布日期:2016-08-02 14:39
WaitForSingleObject和CEvent的结合用法示例 VC6控制台工程 多线程控制 关键词:WaitForSingleObject和CEvent的结合用法示例,VC6控制台工程,多线程控制 发布日期:2017-04-14 13:41
VC++之 CreateEvent和SetEvent及WaitForSingleObject的用法 关键词:VC++,线程同步,CreateEvent,SetEvent,WaitForSingleObje.. 发布日期:2017-04-14 11:53
相关目录:.NETVC&C++
我要评论
正在加载评论信息......