我正在源文件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/

10-11 20:14