12.4.3 共享变量

12.4.3 共享变量

我们说一个变量 v 是共享的,当且仅当它的一个实例被一个以上的线程引用。例如,示例程序中的变量 cnt 就是共享的,因为它只有一个运行时实例,并且这个实例被两个对等线程引用。在另一方面,myid 不是共享的,因为它的两个实例中每一个都只被一个线程引用。然而,认识到像 msgs 这样的本地自动变量也能被共享是很重要的。

练习题 12.6

A. 利用 12.4 节中的分析,为图 12-15 中的示例程序在下表的每个条目中填写“是”或者“否”。在第一列中,符号 v.t 表示变量 v 的一个实例,它驻留在线程 t 的本地栈中,其中 t 要么是 m(主线程),要么是 p0(对等线程 0)或者 p1(对等线程 1)。

变量实例 主线程引用的? 对等线程0引用的? 对等线程1引用的?
ptr
cnt
i.m
msgs.m
myid.p0
myid.p1

B. 根据 A 部分的分析,变量 ptrcntimsgsmyid 哪些是共享的?