Write-and-f-array:实现与应用
分布式、并行与集群计算
2014-07-24 v1
摘要
我们引入一种新的共享内存对象:write-and-f-array,提供其无等待(wait-free)实现,并利用它构建改进的 fetch-and-add 对象的无等待实现。write-and-f-array 以类似于 f-array 推广多写者快照对象的方式,推广了单写者 write-and-snapshot 对象。具体而言,write-and-f-array 由一个结合算子 参数化,概念上是一个具有两个原子操作的数组:- write-and-f 修改数组的单个元素并返回将 应用于所有元素的结果,- read 返回将 应用于所有数组元素的结果。我们提供了一个 元素 write-and-f-array 的无等待实现,其空间复杂度为 ,write-and-f 操作的步数复杂度为 ,read 操作的步数复杂度为 。该实现使用 CAS 对象,并要求其大小为 ,其中 是执行的 write-and-f 操作总数。我们还展示了如何对其进行修改,以实现 的 write-and-f 步数复杂度,同时将空间复杂度增加至 。write-and-f-array 可用于为 个进程创建 fetch-and-add 对象,其空间复杂度为 ,fetch-and-add 操作的步数复杂度为 。这是首个具有多对数步数复杂度和次二次空间复杂度的 fetch-and-add 实现,且无需使用不切实际大小的 CAS 或 LL/SC 对象即可实现。
引用
@article{arxiv.1407.6153,
title = {Write-and-f-array: implementation and an application},
author = {Robert Obryk},
journal= {arXiv preprint arXiv:1407.6153},
year = {2014}
}