C++ 安全传递参数到线程问题
我在主线程的for循环来开启线程:for(inti=0;i<100;i++){pthread_tntid;interr;char*info=newchar[30];//注...
我在主线程的for循环来开启线程:
for (int i =0; i< 100; i++) {
pthread_t ntid;
int err;
char * info= new char[30];//注意这个是要传递的参数而且我刻意NEW在堆上
strcat(info,"haha");
err = pthread_create(&ntid, NULL,SendInfoThread, (void*)info);
if(err!= 0)
{
if (info){
delete[] info;
info = NULL;
}
printf("AnswerClientThread线程创建失败!\n");
}
else
{
pthread_detach(ntid);
info = NULL;
}
}
为何我在子线程里面:
void* SendInfoThread(void* data){
char* sendinf = (char*) data; //这个值有时候不是"haha"字符串
PS:我的主线程SLEEP了几秒,保证所有子线程退出才退出。 展开
for (int i =0; i< 100; i++) {
pthread_t ntid;
int err;
char * info= new char[30];//注意这个是要传递的参数而且我刻意NEW在堆上
strcat(info,"haha");
err = pthread_create(&ntid, NULL,SendInfoThread, (void*)info);
if(err!= 0)
{
if (info){
delete[] info;
info = NULL;
}
printf("AnswerClientThread线程创建失败!\n");
}
else
{
pthread_detach(ntid);
info = NULL;
}
}
为何我在子线程里面:
void* SendInfoThread(void* data){
char* sendinf = (char*) data; //这个值有时候不是"haha"字符串
PS:我的主线程SLEEP了几秒,保证所有子线程退出才退出。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询