我想创建n个线程。然后向它们传递一个结构体以用数据填充该结构体;例如bool来跟踪线程是否完成或被终止信号中断。创建线程并将结构传递给它
n = 5; // For testing.
pthread_t threads[n];
for(i=0; i<n; i++)
pthread_create(&threads[i], &thread_structs[i], &functionX);
假设thread_structs已经配对了。
functionX()
注意功能没有参数。我应该为结构创建一个参数吗?或者我传递的结构是好的?
我该如何指向刚刚传递给函数的结构?
为什么你会传递它作为void而不是结构类型? –
“void *”是泛型指针类型 - 所有指针可衰减为“void *”,而不会出现转换错误。这允许pthread_create的通用定义,而不必知道定制/未来类型。如果它被定义为一个'thread_struct *'并且你想传递一个指向int的指针,那么你就必须进行一次强制转换。 – kfsone
或者更简单的说法:取一个void *是一种说法,它会指向任何东西。不利的一面是,它实际上是以void *的形式到达的,而您必须将其重新放回到界面的一侧。这应该提醒你“这可能是一个指向任何东西,要小心” – kfsone