用错了锁的后果(2种情况:前一种停滞运行,后一种直接崩溃)

1. 该解锁不解锁,比如在这个return之前,忘了解锁:

bool DBTool::GetData()
{

    m_loglock.lockForRead();
    QSqlQuery sql_query(m_database);
    if(!sql_query.exec(strSQL))
    {
        qDebug()<<sql_query.lastError();
        //  m_loglock.unlock(); // 忘了
        return false;
    }
    else
    {
        // do something
    }
    m_loglock.unlock();

    return true;
}

忘记解锁的后果是,别处需要锁的时候,程序就永远停滞运行了。。。

2. 不该解锁的时候进行解锁

程序立刻崩溃,毫无商量余地

时间: 2024-08-05 11:12:51

用错了锁的后果(2种情况:前一种停滞运行,后一种直接崩溃)的相关文章

Win10专业版桌面没有图标的三种情况及解决方法

正常情况,用户进入Win10系统桌面的时候会看到administrator文件夹.计算机.回收站.网络等图标,但有朋友进入桌面后什么图标都没有,这是怎么回事,Win10桌面没有图标可以分为三种情况,下面我们来看下这三种情况的具体解决方法. 一.系统图标消失 桌面右键进入个性化窗口,在主题选项找到桌面图标设置,在桌面图标设置中找到你想要显示的系统图标. 二.全部图标消失 这个时候很有可能是网上赌博桌面图标被隐藏起来了,鼠标右键进入查看选项后勾选,显示桌面图标. 三.桌面图标和任务栏一起消失 1.应

Hibernate多对多两种情况

Hibernate在做多对多映射的时候,除了原先的两张表外,会多出一个中间表做关联,根据中间表的会有两种不同的配置情况: 1.中间表不需要加入额外数据. 2.中间表有其他字段,需记录额外数据. 下面,我们就以address.person这两张表根据这两种情况做下相应的配置: 情况1: 我们需要建三张表,一张address表,一张person表,一张中间表(其实中间表可以不用建,配置好后运行会自动生成),如下: delimiter $$ CREATE TABLE `address` ( `addr

当表名可控的注入遇到了Describe时的几种情况。

转自:http://www.yulegeyu.com/2017/04/16/%E5%BD%93%E8%A1%A8%E5%90%8D%E5%8F%AF%E6%8E%A7%E7%9A%84%E6%B3%A8%E5%85%A5%E9%81%87%E5%88%B0%E4%BA%86Describe%E6%97%B6%E7%9A%84%E5%87%A0%E7%A7%8D%E6%83%85%E5%86%B5%E3%80%82/ SHOW COLUMNS 之前小嘎嘎遇到了个注入是表前缀不可控,表名可控的注入,

SET Transaction Isolation Level Read语法的四种情况

转自:http://www.cnblogs.com/qanholas/archive/2012/01/04/2312152.html 存储过程:SET Transaction Isolation Level Read语法的四种情况 这几天一直在弄存储过程,现在在这里跟大伙共享下资料: SET Transaction Isolation Level Read UNCOMMITTED 使用这句东东呢可以分为四种情况,现在就在这里逐一介绍: 第一种情况: READ   COMMITTED 这句的作用是

MySQL索引类型 &amp; Mysql索引会失效的几种情况分析

MySQL索引类型介绍 (1)普通索引 这是最基本的索引,它没有任何限制.它有以下几种创建方式: CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度:如果是BLOB和TEXT类型,必须指定 length,下同. ALTER mytable ADD INDEX [indexName] ON (username(length)) CREATE TABLE mytable( ID

TI C66x DSP 系统events及其应用 - 5.10(创建ISR的三种情况)

ISFP是服务中断的指令包,创建ISR的三种情况: 1,一个ISFP包的8条指令就可以满足ISR 2,ISR可以占用多个连续的ISFP(前提是下面的中断没有使用) 3,ISR位于IST之外 上述图中,B IRP表示从可屏蔽中断(INT4~15)中返回(从ISR返回或者从ISFP中返回)的指令.因为B指令有5个cycle的延迟,所以在B跳转指令后加上5个NOP指令,目的是防止CPU执行到其他的程序.如在第一张图中,如果B IRP后面的指令是单cycle指令(如NOP 1),那么CPU会在执行完IN

存储过程:SET Transaction Isolation Level Read语法的四种情况

这几天一直在弄存储过程,现在在这里跟大伙共享下资料: SET Transaction Isolation Level Read UNCOMMITTED 使用这句东东呢可以分为四种情况,现在就在这里逐一介绍: 第一种情况: READ   COMMITTED 这句的作用是: 指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据.该选项是   SQL   Server   的默认值. 第二种情况: READ   UNCOMMITTED 这句的作用是: 执行脏读

今天遇到IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件,通过网上找到解决方案,因此转载,并对另外一种情况进行注释。

一般遇到IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件 通常有两种解决方法: 1. 授予执行导出的用户dba权限(导数前要grant,导入后要revoke dba权限) 2. 重新用非dba用户导出数据 (如果dmp文件比较大,需要消耗较长的时间) 如果有dba权限的用户,可以方便避免上述两个问题. 3.利用有DBA权限的用户结合fromuser ,touser 参数进行导入 如:imp report/myoracle file=1.dmp fromuser=report

关于VS2012 生成或调试时无响应的另一种情况

最近在做一个项目,差不多结尾了. 然后某天发现,生成和调试都会卡好一会(差不多要1分钟吧)才可以正常开始. 然后各种找问题,重装VS,重装系统,什么中文输入法,结果都一样. 最后只能怀疑是项目 问题了,后来想起来主窗口使用了一个自己写的用户控件,这个控件是容器来的,然后里面的控件全部变成空白了,当然之前是正常的,后来不知道为什么变成这样,然后我就自己手动将控件添加回去这个控件内 在Form1.Designer.cs文件内的 this.xxxx.Controls.Add(this.button3)