我正在源文件a.c和b.c之间传递这样的队列
档案:a.c
sq[a]=new_queue();
pthread_create(&st[a],NULL,sendPacket,sq[a]);
档案:b.c
void *sendPacket(void *queue){
/* here i need to know which queue has come ,determine
the index of queue how can I do it? */
}
最佳答案
创建队列的更高级表示。似乎队列可以是void *
(您未显示其实际类型,即new_queue()
调用返回什么?),因此将其嵌入结构中,同时添加其他参数:
struct queue_state {
void *queue;
int index;
};
然后实例化一个结构,并将指向它的指针传递给线程函数:
struct queue_state qsa = malloc(sizeof *qsa);
if(qsa != NULL)
{
qsa->queue = new_queue();
qsa->index = 4711; /* or whatever */
pthread_create(&st[a], NULL, sendPacket, qsa);
}
然后,线程函数可以使用
struct
声明来访问所有字段。当然,声明必须位于两个C文件中都包含的共享标头中(例如queue.h
)。关于c - 将队列作为参数传递给c,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10674162/