共有メモリ変数は、ジェネレータオブジェクト SHVAR により実現している (runtime/gg_shvar.c)。SHVAR にはメソッド表フィールドと 中断チェーンがあり、 メソッド表フィールドはロック用フィールドとしても利用している。
typedef struct Shvar {
struct generator_object_method_table *method_table;
Sinfo chain;
} Shm_var;
各ノードはロックして変数の状態を変える。通常ノードはフックした後、ロック をはずさなければならない。しかし具体化した後にはアンロックは必要ない。
これは、 ロック時に、単にロック用フィールドをスピンするだけでなく、変数の値の設定 の有無を監視しながら、ロック用フィールドを監視する。ゆえに、ロックが解除され ればロックは成功するし、具体化されても、スピンから抜け、該当する処理に移れる。 これらの処理は、shvar オブジェクトのUNIFYメソッドにて行われている。
構造体と共有変数とが具体化される時には以下で述べるような 最適化も行っており、これもUNIFYメソッド中で実装されている。