微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

免等待缓冲区填充算法

如何解决免等待缓冲区填充算法

| 我有一个恒定宽度N的缓冲区,两端都有多个进程填充-每个进程可以同时将L个元素推到最左边的空白位置,或者将R个元素推到最右边的空白位置。 我使用CAS指令对两个变量(左堆栈顶部和右堆栈顶部)上的进程进行同步。 确保缓冲区不会溢出,实际上,堆栈顶部之间将留出一个元素的空间。我需要的是这些过程中只有一个可以报告该空白区域的位置。 最初,我必须同时在左侧和右侧同时进行推压,因此在向左推然后向右推之后,该过程可以在左侧堆栈顶部看,将其与最后一次向右推的位置进行比较+1,然后如果这两个相等,则该过程为最后一个过程(当缓冲区已满时向右推动的最后一个过程获胜)。但是,现在我已经意识到我不能保证最终会在两端同时进行推送,因此该协议无法应用。 您能想到足以满足需求的免等待协议吗?我可以在CAS指令中使用更多变量,但是我无法一次原子地修改或读取多个变量。当然,变量越少越好。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。