临界区睡眠
24.1Sleep
在某些情况下,当除了一个线程之外的所有线程都被阻塞时(例如等待一个结构化查询语言锁),竞争条件可能会重复出现。那么剩下的线程有足够的时间来完成关键的代码。
这里的问题是确保阻塞线程一直运行,直到它们在剩余线程到达关键代码之前到达阻塞点。
一种解决方案是在结构化查询语言语句前面使用“mysqltest”的“睡觉”命令,将剩余的线程驱动到关键代码中。
示例:
-连接连接一
锁表T1级(一种通讯线路的名称)写;
-连接连接2
#这将在等待锁定()中阻止。
发送插入T1级(一种通讯线路的名称)值(1);
-连接连接一
#睡眠,直到我们可以确定conn2达到等待锁().
睡眠2
#运行关键代码。
冲洗表t1;
"睡眠"最大的问题是你需要指定一个固定的时间。它必须足够大,这样即使在非常慢的机器上,在重负载下,测试也能按预期进行。因此,对于普通机器来说,它太大了。浪费大量时间。
底线是尽可能避免"睡眠"。
MySQL : MySQL内部手册: 24.1睡眠https://dev.mysql.com/doc/internals/en/sleep.html
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53736.html