【发布时间】:2013-09-02 15:21:38
【问题描述】:
我对二叉树中的彼得森算法有一些疑问。
我正在对“多处理器编程的艺术”一书进行一些练习,但我被困在第 2 章,前 13 章:
"另一种概括双线程彼得森锁的方法是安排 二叉树中的多个 2 线程 Peterson 锁。假设 n 是 2 的幂。每个线程都被分配了一个叶锁,它与另一个线程共享。每把锁 将一个线程视为线程 0,将另一个视为线程 1。”
没关系,但是呢?如果 Peterson 只处理 2 个线程,那么这棵树会怎么样?一树一叶? (因为如果我有 2 个线程,并且每个叶子处理 2 个线程......结果将是一棵只有一片叶子的树?)
"在树锁的获取方法中,线程每两个线程获取一次 Peterson 从该线程的叶子锁定到根。树锁的释放方法为 树锁解锁线程获得的每个 2 线程 Peterson 锁, 从根回到叶子。”
他是什么意思?叶子如何通过根节点?很混乱!! :S
谢谢你们!
【问题讨论】:
标签: concurrency locking mutual-exclusion