Algorithm 互斥队列使用的集中式算法

Algorithm 互斥队列使用的集中式算法,algorithm,distributed-computing,mutual-exclusion,Algorithm,Distributed Computing,Mutual Exclusion,引用第6.3.2节 协调器从延迟队列中取出第一项 请求并向该进程发送一条授权消息 因此,本质上,如果我们在同一层上工作,协调进程或线程使用队列来缓冲请求,但队列本身是一个共享资源,需要互斥保护,因此它看起来像鸡与蛋综合症 我的问题是如何实现集中式算法,比如说在同一台机器上,只使用内存RD/RW原语,即没有CA、没有互斥等。类似C的代码将非常好 这个问题的动机只是拓宽了我的分布式系统视野 协调器(例如,每个客户端有一个线程的网络套接字服务器)作为一个程序一台机器运行。您可以在那里使用普通的互斥锁,

引用第6.3.2节

协调器从延迟队列中取出第一项 请求并向该进程发送一条授权消息

因此,本质上,如果我们在同一层上工作,协调进程或线程使用队列来缓冲请求,但队列本身是一个共享资源,需要互斥保护,因此它看起来像鸡与蛋综合症

我的问题是如何实现集中式算法,比如说在同一台机器上,只使用内存RD/RW原语,即没有CA、没有互斥等。类似C的代码将非常好


这个问题的动机只是拓宽了我的分布式系统视野

协调器(例如,每个客户端有一个线程的网络套接字服务器)作为一个程序一台机器运行。您可以在那里使用普通的互斥锁,这是由编程语言的线程部分提供的。分布式互斥很困难,但在本地没有问题。@deviantfan如问题中所述,我的设置是一台机器,使用线程和机器常规内存作为通信介质,没有套接字。此外,只允许使用简单的内存rd/rw,因此没有互斥等。例如:假设我有100个线程需要访问计数器,如何使用当然是协调线程和队列,实现这个端井,然后通过共享内存而不是套接字进行通信。但是通常,在C级上只有正常的内存读/写,没有互斥,没有asm…,线程的同步是不可能的。[不,彼得森算法等也不起作用]@deviantfan为了进一步说明deviantfan所说的,现代多处理器不是顺序一致的,所以你不能用一种有助于理解教科书材料的方式来解释它们的行为。@davidesenstat为了论证,让我们假设顺序一致性假设正在放置隐藏的围栏,同样是一个思考过程——是否可能有100个线程通过代理/协调器线程,仅使用mem-rd/rw来增加共享计数器