gpt4 book ai didi

圆形缓冲区比。锁定空闲堆栈以实现一个空闲列表

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:05 25 4
gpt4 key购买 nike

由于我一直在编写一些多线程代码来取乐,所以我想到了以下情况:

线程从内存池中申请单个资源单元,它对其进行处理并将指向此数据的指针发送到另一个线程,以便使用循环缓冲区(1R/1W 情况)进行进一步操作。

后者必须在处理完他收到的数据时通知前一个线程,以便回收内存。

我想知道是否更好 - 性能方面 - 将这个“Freelist”实现为另一个循环缓冲区 - 保存空闲资源的地址 - 或者选择无锁堆栈方式(在 x86-64 上实现 DCAS)。

一般来说,这两种不同方法的优缺点是什么?

最佳答案

以防万一,无锁和无等待是有区别的。前者意味着没有锁定,但线程仍然可以忙于自旋而没有取得任何进展。后者意味着线程总是在没有锁定或忙转的情况下取得进展。

对于一个读取器和一个写入器,无锁和无等待的 FIFO 循环缓冲区实现起来很简单。

我听说后进先出堆栈也可以免等待,但对 FIFO 列表不太确定。听起来您在这里需要一个队列而不是一个堆栈。

关于圆形缓冲区比。锁定空闲堆栈以实现一个空闲列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7890601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com