我正在考虑具有两种方法的并发多生产者多消费者数据结构:success = try_put(elem)
和success = try_get(&elem)
. 我假设这个数据结构有固定数量的预分配内存,如果它是满的或空的,success
布尔标志包含false
不能进行相应操作的意思。
数据结构不强制执行任何排序保证,因此它是堆栈、队列还是其他东西都没有关系。这个数据结构在文献中有名字吗?
是否有可能使这种数据结构的无等待实现?是否需要存在恒定时间的原子操作,如果是,它们应该如何使用?
我正在考虑具有两种方法的并发多生产者多消费者数据结构:success = try_put(elem)
和success = try_get(&elem)
. 我假设这个数据结构有固定数量的预分配内存,如果它是满的或空的,success
布尔标志包含false
不能进行相应操作的意思。
数据结构不强制执行任何排序保证,因此它是堆栈、队列还是其他东西都没有关系。这个数据结构在文献中有名字吗?
是否有可能使这种数据结构的无等待实现?是否需要存在恒定时间的原子操作,如果是,它们应该如何使用?
数据结构可以根据您实现它的方式来命名。
制片人 | 消费者 | 参考 | 姓名 |
---|---|---|---|
多 | 单身的 | Jiffy:快速、高效、无等待的多生产者单消费者队列 | 队列 |
多 | 多 | 一个可扩展的多生产者多消费者无等待环形缓冲区 | 环形缓冲区 |
单身的 | 多 | FFQ:一个快速的单生产者/多消费者并发 FIFO 队列* | 并发先进先出队列 |
* 生产者无等待接口,消费者无锁