(1) 如何向线程对应的函数传递参数?一个参数如何传递,多个参数如何传递? (2) 深入理解线程与进程的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(1) 如何向线程对应的函数传递参数?一个参数如何传递,多个参数如何传递? (2) 深入理解线程与进程的相关的知识,希望对你有一定的参考价值。

构造一个结构体,其中的成员即为想要传递的参数类型。实例化一个结构体变量obj,将指向该结构体变量obj的指针赋给lpParameter即可。
简单举例:
。。。。。
struct DATA

int a;
int b;
int c;
;
DATA d = 1,2,3;
void ThreadName1(LPVOID lpParameter);
static HANDLE hHandle1=NULL;
DWORD dwThreadID1;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

int nRetCode = 0;
hHandle1=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)ThreadName1,(LPVOID) &d ,0,&dwThreadID1);
CloseHandle(hHandle1);
ExitThread(0);

return nRetCode;


void ThreadName1(LPVOID lpParameter)//参数为int型,传参成功

DATA *p = (DATA *)lpParameter;//类型转换
printf("a = %d\n",p->a);
printf("b = %d\n",p->b);
printf("c = %d\n",p->c);
....
即可实现多参数的传递。
参考技术A 我不知道,但我知道你是谁了!我也想知道这个答案追问

额,什么啊,你是谁啊?

向 Q_Object 构造函数添加参数

【中文标题】向 Q_Object 构造函数添加参数【英文标题】:Adding parameters to Q_Object constructor 【发布时间】:2017-04-28 03:08:06 【问题描述】:

当我在 Qt Creator 中创建一个新的 Q_OBJECT 类时,它会生成这个默认构造函数。我想添加另一个参数以便我可以传递用户输入,但我不确定如何执行此操作,因为QObject 是第一个参数并且不知道如何跳过第一个参数并在@987654323 上传递用户输入@参数。

如何采用此默认值:

public:
            explicit renderJob(QObject *parent = 0);

这样做

public:
    explicit renderJob(QObject *parent = 0,QString userInput);

【问题讨论】:

【参考方案1】:

C++ 中,如果您放置默认参数,这些参数应位于最后位置。此外,应该将 QObject 参数传递给基类构造函数。例如:

class renderJob: public BaseObjectClass

    Q_OBJECT
public:
    explicit renderJob(QString userInput, QObject *parent = 0);


[...]

renderJob::renderJob(QString userInput, QObject *parent):
BaseObjectClass(parent)

    [...]

【讨论】:

以上是关于(1) 如何向线程对应的函数传递参数?一个参数如何传递,多个参数如何传递? (2) 深入理解线程与进程的的主要内容,如果未能解决你的问题,请参考以下文章

FormData如何向后端传递数组

在C语言中参数是如何传递的?

python怎么向类中的函数传递参数

cpp 线程传递参数

ThreadLocal父子线程数据传递解决方案

问一个createThread函数的线程函数参数如何传递的问题麻烦告诉我