c++ CreateThread主线程如何传参给子线程?

主线程要如何传递参数过去呢
百度了一圈说是CreateThread 的第4个参数是传参的

那么我又应该如何调用helper并把参数传入呢?

直接调用吗? string 传递过去好像说会乱码

int main()
{
    string getResponseStr={"a","b"}
    helper(getResponseStr);
    g_Handle = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Thread, helper, NULL, NULL);
    CloseHandle(g_Handle);
}
string WINAPI helper(string pvParam) {
    
    return pvParam;
}
string Thread(string lParam)
{
   
    while (1) {
        
      我的代码......................
    }

}
阅读 2.3k
1 个回答

LPTHREAD_START_ROUTINE) 是有一个 LPVOID 参数的,这个是线程的入口函数。

CreatThread 的第四个参数 lpParameter 就是这个参数。

注意,他的类型是 LPVOID 。你可以把你所有要传的参数放到一个 struct 里,然后把指针传过去。(只有一个变量的话,直接传指针就成)

所以大概是这样的:

int main()
{
    string getResponseStr={"a","b"}
    g_Handle = CreateThread(NULL, NULL, Thread, &getResponseStr, NULL, NULL);
    CloseHandle(g_Handle);
}

DWORD WINAPI Thread(LPVOID lParam)
{
     string *strParam = (string *)lParam;  
    while (1) {
        
      我的代码......................
    }
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题