• 全部
  • 问答

mysql中的 GET_LOCK() RELEASE_LOCK() 这种锁具体用途是什么?

baidu_32316735 2015-11-12 11:48:50
GET_LOCK(锁名,超时秒) 加锁,
RELEASE_LOCK(锁名) 解锁;
IS_FREE_LOCK(锁名) 检查锁是否可用
IS_USED_LOCK(锁名) 检查锁是否正在被使用,

手册上的上面4个函数,目测是线程锁;
请问具体用途是做什么用的,搞不明白;
难道就是测试锁名玩? 搞不清具体锁定了什么.
求讲解,谢谢';
...全文
199 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
另外,get_lock的第二个参数,应该是指申请锁的线程持有这个锁多久,比如10秒
回复
比如,先有一个sql申请了 xx锁。另一个线程也要申请xx锁,为了防止被锁住,先看看IS_USED_LOCK,是否有人正在用这个xx锁,如果有人用了xx锁,他就改个名字,比如申请yy锁,这样就不会冲突,也不会被锁住。
回复
既然mysql有这个东西,那肯定是又用的。 GET_LOCK(锁名,超时秒) 加锁:获取指定名称的锁,指定超时时间,比如一个sql语句获取了xx锁,然后你也要获取这个xx锁,就用这个。 RELEASE_LOCK(锁名) 解锁:获取了锁之后,用完了,就要释放,不然别的sql就执行不了。 IS_FREE_LOCK(锁名) 检查锁是否可用:测试这个锁是否其他线程已经在用了。 IS_USED_LOCK(锁名) 检查锁是否正在被使用, 所有这些都基于 锁名,大家都用同样的锁名,才有效,否则张三,李四,都不一样的锁名,那肯定就么有用了。
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
MySQL
创建于2007-09-28

5.5w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2015-11-12 11:48
社区公告
暂无公告