queue.h:如何创建列表列表/队列队列/类似组合?
queue.h: how to create list of lists / queue of queues / similar combinations?
Man page of BSD's queue.h 清楚地展示了如何创建一个 single-/double-linked list/tail 队列,但我不知道如何创建,例如列表列表或队列队列?特别是slave query的声明和初始化如何处理?
我尝试了什么:
//element of slave queue
struct slaveentry {
STAILQ_ENTRY(slaveentry) pts; //pointers
/*data here*/
} *selt; //element of queue
//element of master queue
struct masterentry {
STAILQ_ENTRY(masterentry) pts; //pointers
struct slavehead *slave; //pointer to slave queue head
/*data here*/
} *melt; //element of queue
//initialization of sturctures
STAILQ_HEAD(masterhead, masterentry) big_queue = STAILQ_HEAD_INITIALIZER(big_queue);
STAILQ_INIT(&big_queue);
//what's next? I don't know, maybe some sort of the following
STAILQ_HEAD(slavehead, slaveentry) small_queue = STAILQ_HEAD_INITIALIZER(small_queue);
STAILQ_INIT(&small_queue);
如果您对解决方案感兴趣,可以在这里查看:https://gist.github.com/postboy/fb825b9fe813a0a18d04ef4cdf2ac7a0
我花了一些时间才明白如何处理这个问题,所以这个问题几天前就出现在这里了。
Man page of BSD's queue.h 清楚地展示了如何创建一个 single-/double-linked list/tail 队列,但我不知道如何创建,例如列表列表或队列队列?特别是slave query的声明和初始化如何处理?
我尝试了什么:
//element of slave queue
struct slaveentry {
STAILQ_ENTRY(slaveentry) pts; //pointers
/*data here*/
} *selt; //element of queue
//element of master queue
struct masterentry {
STAILQ_ENTRY(masterentry) pts; //pointers
struct slavehead *slave; //pointer to slave queue head
/*data here*/
} *melt; //element of queue
//initialization of sturctures
STAILQ_HEAD(masterhead, masterentry) big_queue = STAILQ_HEAD_INITIALIZER(big_queue);
STAILQ_INIT(&big_queue);
//what's next? I don't know, maybe some sort of the following
STAILQ_HEAD(slavehead, slaveentry) small_queue = STAILQ_HEAD_INITIALIZER(small_queue);
STAILQ_INIT(&small_queue);
如果您对解决方案感兴趣,可以在这里查看:https://gist.github.com/postboy/fb825b9fe813a0a18d04ef4cdf2ac7a0
我花了一些时间才明白如何处理这个问题,所以这个问题几天前就出现在这里了。