3.6.3 锁
OpenSHMEM在对称内存中实现互斥锁,这些函数的原型如代码清单3-12所示。lock参数必须存在于对称内存空间中并在试图使用前被初始化为0,一般都在全局范围将它们声明为静态变量并初始化为0,或者程序员在lock初始化后和被使用前调用全局同步屏障。shmem_set_lock()函数将在获得锁后返回,如果需要的话会等到锁被清除。shmem_clear_lock()函数将释放锁,且仅应该被通过set函数获得锁的PE调用。shmem_test_lock()函数会尝试获取锁,如果成功返回0,若锁已被设置则返回1,正如其他范型中的锁,有必要让程序员确信程序没有创建死锁。