【发布时间】:2021-07-11 17:33:32
【问题描述】:
我正在研究如何在 pthread_create() 中传递多个参数。初始化是
pthread_t th[1];
pthread_create(&th[i], NULL, &producer, shmData);
我的生产者方法看起来像这样。
void producer(struct ShmData *shmData, sem_t *sem);
当调用pthread_creat 时,我基本上需要同时传递shmData 和sem。
我该如何完成这项任务?
【问题讨论】:
-
您的线程函数应该采用一个指向某个数据结构的指针,该数据结构又将包含所有需要的参数。您的
producer函数不适合按原样传递给pthread_create。 -
你不能传递额外的参数。但是您可以使用一个
void *参数来指向包含您需要的数据的结构。确保在线程启动时结构仍然存在(并且没有被覆盖) - 例如,可能在创建函数中对其进行 malloc,并在使用后将其释放到线程中。