霸道后备箱lock和unlock是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了霸道后备箱lock和unlock是啥意思相关的知识,希望对你有一定的参考价值。
霸道后备箱lock和unlock是什么意思,lock最简单的用法就是:在多线程中,我们往往要操作同一块内存,但是同一时间只允许一个线程操作,其他想要操作,只能等到被释放。这个时候就可以用到lock(文件共享锁)。 用法: mutex +名称 例如mutex testlock 举个例子: 例如我们要创建一个全局的数组,接收数据 //创建锁 mutex testlock unsignedcharg_test[4]=0,0,0,1; //此时我们假设有两个线程要进行操作这个数组 参考技术A 霸道后备箱lock和unlock是什么意思是锁和解锁的意思 参考技术B Lock:锁定unlock:解锁 参考技术C Lock和UNLock是什么意思
锁和解锁
lock和UNLock的意思分别为锁和解锁。 参考技术D lock和UNLock的意思分别为锁和解锁。
一、lock
1、读音
英 [lɒk] 美 [lɑːk]
2、含义
n. 锁;水闸;一缕头发;一簇;一束
v. 固定;锁(住);抓牢;过闸
3、例证
He chiseled a hole in the door to fit a new lock.
他在门上凿了个孔,以便装一把新锁。
二、unlock
1、读音
英 [ˌʌn'lɒk] 美 [ˌʌn'lɑːk]
2、含义
v. 开锁;开启;揭开;显露
3、例证
She fail to unlock the safe in spite of all her exertion.
她虽然费尽力气,仍未能将那保险箱的锁打开。
lock tables和unlock tables
1、lock tables table1 read,table2 read,table3 read
igoodful@a8-apple-iphone-db00.wh(glc) > show tables; +---------------+ | Tables_in_glc | +---------------+ | mobile | | user | +---------------+ 2 rows in set (0.00 sec) Fri Dec 20 17:42:35 2019 igoodful@a8-apple-iphone-db00.wh(glc) > show open tables where in_use >=1; +----------+-------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+-------+--------+-------------+ | glc | user | 1 | 0 | +----------+-------+--------+-------------+ 1 row in set (0.00 sec) Fri Dec 20 17:42:47 2019 igoodful@a8-apple-iphone-db00.wh(glc) > lock tables user read; ######### 添加读锁 Query OK, 0 rows affected (0.00 sec) Fri Dec 20 17:43:03 2019 igoodful@a8-apple-iphone-db00.wh(glc) > show open tables where in_use >=1; ########## 表明:添加表读锁后,表被用次数加一 +----------+-------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+-------+--------+-------------+ | glc | user | 2 | 0 | +----------+-------+--------+-------------+ 1 row in set (0.00 sec) Fri Dec 20 17:43:08 2019 igoodful@a8-apple-iphone-db00.wh(glc) > select * from user; ########## 表明:可以读取锁住的表的数据。 +------+------+ | id | name | +------+------+ | 1 | 1 | | 2 | 1 | +------+------+ 2 rows in set (0.01 sec) Fri Dec 20 17:43:37 2019 igoodful@a8-apple-iphone-db00.wh(glc) > select * from mobile; ########## 表明:只能读取锁住的表的数据,不能查看没有锁住的表的数据 ERROR 1100 (HY000): Table ‘mobile‘ was not locked with LOCK TABLES Fri Dec 20 17:44:11 2019 igoodful@a8-apple-iphone-db00.wh(glc) >
########################################
在另一个会话线程中执行如下语句:
igoodful@a8-apple-iphone-db00.wh(glc) > select * from user; ################# 表明:一个会话给表添加了读锁,那么不影响其他会话线程读取该表数据 +------+------+ | id | name | +------+------+ | 1 | 1 | | 2 | 1 | +------+------+ 2 rows in set (0.00 sec) Fri Dec 20 17:54:11 2019 igoodful@a8-apple-iphone-db00.wh(glc) > insert into user values (3,‘3‘); ################# 表明:一个会话给表添加了读锁,其他会话线程只能对该表进行读取,而不能对该表执行执行dml和ddl语句。 ^CCtrl-C -- sending "KILL QUERY 233531" to server ... Ctrl-C -- query aborted. ERROR 1317 (70100): Query execution was interrupted Fri Dec 20 17:55:59 2019 igoodful@a8-apple-iphone-db00.wh(glc) > select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 233531 | +-----------------+ 1 row in set (0.00 sec) Fri Dec 20 17:57:07 2019 igoodful@a8-apple-iphone-db00.wh(glc) > show open tables where in_use>0;; +----------+-------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+-------+--------+-------------+ | glc | user | 2 | 0 | +----------+-------+--------+-------------+ 1 row in set (0.00 sec) ERROR: No query specified Fri Dec 20 17:57:25 2019 igoodful@a8-apple-iphone-db00.wh(glc) > lock tables user read; ################# 表明:多个会话线程可以对同一张表添加读锁。 Query OK, 0 rows affected (0.00 sec) Fri Dec 20 17:57:57 2019 igoodful@a8-apple-iphone-db00.wh(glc) >
当一个会话线程执行:
use glc;
lock tables user read;
那么
1)、该会话线程只能查询锁定的这几个表的数据,没有被锁定的表,不能查询到数据
2)、同时阻止其他会话对锁住的表进行事务操作语句和添加write表锁,
3)、其他会话可以对同一个表添加read锁,
4)
执行
以上是关于霸道后备箱lock和unlock是啥意思的主要内容,如果未能解决你的问题,请参考以下文章