Gcware Python 接口(7)

gcwarelock

提供接口用来创建锁升级锁和删除锁(详情查看文档队列锁的机制) 此类函数使用前使用前置函数gclckinitialize()或者gcwinit ()

1.10.1 Getlocksbyhandle

功能:找出一个lck句柄下的所有的锁 参数说明

Handle lck 的句柄

返回参数:

Createtime :创建锁的时间

Name :锁的名称

Lockid:锁的 id

Orphan:是否为孤儿锁

Content:对锁的描述

Owner :锁拥有者的节点

Type :锁的类型

实例:

>>> gcware.getlocksbyhandle(7246737240087330818) ({'create time' : '20191113131705', 'name': 'gc-eventTock', 'lockid': 1206137321930358784, ' orphan': 'TRUE', ' content': 'global master',

'owner':  '192.168.6.188',  ' type': 'EXCLUSIVE'}, {'create time':

'20191114095446',       'name' :      'gc-event-lock',      ' lockid':

8152761901143556096, 'orphan' ' FALSE', 'content': 'global master',

'owner':  '192.168.6.189', 'type':    'EXCLUSIVE'}, {'create time':

'20191120094528',       'name':       'gc-event-lock',      'lockid':

5130829985489092608, 'orphan': 'FALSE', 'content': 'global master', 'owner':   '192.168.6.185', 'type':          'EXCLUSIVE'}, {'create time':

'20191121140809', 'name':    'lock', 'lockid':   3263932475012808704,

'orphan': ' TRUE', ' content': ' zuile', ' owner': ' 192.168.6. 185' , ' type': 'SHARE'}, {'create time': '20191122083722', 'name': 'lock', 'lockid': 7614400102915899393, 'orphan': 'TRUE', 'content': 'zuile', 'owner': '192.168.6.185', 'type': 'SHARE'})

1. 10. 2 Gclock

(lck_handle, lock_name, lock_mode, lock

_flags, max_share_lock, lock_commit)

功能:向gcware提岀加锁的申请

参数说明:

1输入参数:

lck_handle:gcware锁服务的连接句柄,由gcLckInitialize调用获得 lockName:锁名称。字符串,长度[1,256]

lockMode:锁的类型,共享锁还是互斥锁。取值范围:

{GC_LCK_PR_LOCK_MODE(共享锁),GC_LCK_EX_LOCK_MODE(互斥锁)}

1为共享锁2为互斥锁

lockFlags锁的标志,取值 0 或者 GC_LCK_LOCK_NO_QUEUE, 0 表示 排队,GC_LCK_LOCK_NO_QUEUE 表示不排队。若选择 GC_LCK_LOCK_NO_QUEUE,则等同于同步加锁模式

maxShareLock:共享锁的最大数量。取值范围[1, 4294967295]。其中,0 表示没有最大限制。服务端的设置支持动态调整。例如,第一次设置的 maxShareLock5,则服务端也相应的设置为5,若第二次调用设置为6,则 服务端也相应的调整为6,并使用6对锁的数量进行限制。需要注意的是,调 用了 gcLock只要结果返回GC_AIS_OKmaxShareLock就已经生效了,无论 加锁是否成功。当新的maxShareLock生效后,会对排队中的锁进行一次新的 审查,那些满足新的maxShareLock条件的锁,这时可以授予。

lockContent:锁的备注。字符串,长度[0,256]

2输岀参数:

lockId:锁的ID,它在gcware的某一个客户程序进程内是唯一的。当锁的 事件发生时,可使用这个ID来区别是哪个锁

3返回值:

  1. , lock_id :成功则返回 lockid
  2. , GC_AIS_ERR_TRY_AGAIN:表明 corosync 间正在同步)
  3. , GC_AIS_ERR_CLUSTER_LOCKED :表明 corosync 处于少数派
  4. , GC_AIS_ERR_INVALID_PARAM :参数错误
  5. ,其他错误:客户端必须按错误处理

实例:

>>> gcware.gclock(6320000717721436161,"lock", 1,0,10, "zuile") 3263932475012808704

1.10.3 Gclock_wait(lck_handle, timeout)

功能:等待gcware加锁的结果。它监听本连接内,所有通过gcLock申请的锁的 事件。它类似于一个pol 1函数,本连接内申请的锁的集合就相当于这个poll所监 听的fd集合

参数说明:

lckHandle:gcware锁服务的连接句柄,由gcLckInitialize调用获得 timeout:超时时间。单位为毫秒。取值范围0,10000],其中0表示无限等待。

如果在超时时间内,gcware都没有返回结果,本接口将返回错误 输岀参数:

lockid锁的 ID lockStatus:锁的状态

result返回的信息

实例:

>>> gcware.gclockwait(381366948123901952, 1000)

(230429019743, 36923136, 9)

1. 10. 4 Gcunlock (lockid)

功能:释放一个锁 参数:lockid锁的id 返回参数:1为成功 实例: >>> gcware.getlocksbyhandle(7246737240087330818)

({'create time' : '20191113131705', 'name': 'gc-eventTock', 'lockid': 1206137321930358784,  ' orphan': 'TRUE', ' content': 'global master',

'owner':  '192.168.6.188',  ' type': 'EXCLUSIVE'}, {'create time':

'20191114095446',       'name' :     'gc-event-lock',      ' lockid':

8152761901143556096, 'orphan': 'FALSE', 'content': 'global master', 'owner':   '192.168.6.189', 'type':          'EXCLUSIVE'}, {'create time':

'20191120094528',       'name':      'gc-event-lock',      'lockid':

5130829985489092608, 'orphan': 'FALSE', 'content': 'global master', 'owner':   '192.168.6.185', 'type':          'EXCLUSIVE'}, {'create time':

'20191121140809', 'name':    'lock', 'lockid':   3263932475012808704,

'orphan': 'TRUE', 'content': 'zuile', 'owner': '192.168.6.185', 'type': 'SHARE'})

>>>

>>> gcware.gcunlock(3263932475012808704)

1

>>> gcware.getlocksbyhandle(7246737240087330818)

({'create time': '20191113131705', 'name': 'gc-event-lock', 'lockid': 1206137321930358784, 'orphan': 'TRUE', 'content': 'global master',

'owner': '192.168.6.188',   ' type': 'EXCLUSIVE'}, {'create time':

'20191114095446',      'name' :      'gc-event-lock',       ' lockid':

8152761901143556096, 'orphan' ' FALSE', 'content': 'global master',

owner':  '192.168.6.189', 'type':   'EXCLUSIVE'}, {'create time':

20191120094528',

name':      'gc-event-lock',        'lockid':

5130829985489092608, 'orphan': 'FALSE', 'content': 'global master', owner': ' 192. 168. 6.185', 'type': 'EXCLUSIVE'})

1.10.5 Gclockupdate

(handle, name, lockid, lockmode, lockfla gs, priority)

功能将锁升级(共享锁升级成互斥锁)

参数说明:

Handle : lck 的句柄

Name :锁的名称

Lockid :锁的 id

Lockmode :锁的模式

共享锁1

互斥锁 2

Lockflags:锁的标识

队列锁0

非队列锁1

Priority :锁的优先权

返回参数:

Result :   1表示成功

实例:

>>>

gcware.gclockupdate(2843754445760626689,"noname",1104876011863932928

,2,0,1)

1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值