pthread_create创建线程如何传参

pthread_create如何传参

PthrreadParams定义

struct PthreadParams {
	CreateVTKAndPVDFile* pThis;
	int myid;
	/*
	*其它相应的参数 省略
	**/
};

pthread_create传参

        PthreadParams* params=new PthreadParams[MAXTHREADS];
	for (int i = 0; i < thread_nums; i++)
	{
		
		params[i].myid = i;
		//myid[i] = i;
		params[i].pThis = this;
		pthread_create(&tid[i], nullptr, calculateCellsPerThread, (void*)&params[i]);
	}
	delete[] params;
	

错误的方式:
方式1:

for (int i = 0; i < thread_nums; i++)
	{
		PthreadParams params[MAXTHREADS]
		params[i].myid = i;
		//myid[i] = i;
		params[i].pThis = this;
		pthread_create(&tid[i], nullptr, calculateCellsPerThread, (void*)&params[i]);
	}

方式2:

for (int i = 0; i < thread_nums; i++)
	{
		PthreadParams params
		params.myid = i;
		//myid[i] = i;
		params.pThis = this;
		pthread_create(&tid[i], nullptr, calculateCellsPerThread, (void*)&params);
	}

why?

Guess you like

Origin blog.csdn.net/haimianjie2012/article/details/120163925