关于QString使用的一点体会

早就听说QString是非线程安全的,以前在使用过程中也没有过多的体会,下面介绍一下自己的使用过程。

使用环境:两个程序进行通信,首先,程序A向程序发送一组请求,程序B接收到请求后,组织数据,然后发回程序A,程序A通过另一个线程(回调线程)接收程序B的数据并进行处理。

QString的使用:在程序A中使用了QString作为发向程序B的一组数据中每个数据的标示,并且以指针的方式记录在发送缓冲区中,以便在回调线程中根据QString所标示的数组,进行数据处理。

程序中的锁:为避免多线程调用的问题,采用加锁的方式保证同一时间只有一个请求过程(从请求到回调完成)。

程序表现:程序编译运行开始时还算稳定,但每次经过一段时间后便出现异常。

分析:经过堆栈分析,每次异常都出现在QString的处理中,所以判断是QString在多线程中使用造成的原因。

解决方法:将QString的内容进行转换,记录为字符数组,程序稳定。

 

后记:线程安全是针对多线程来讲的,如果所使用的公用变量在多线程下没有被保护机制时,变量结果会和理论值不一致,这样就叫作线程不安全,相反公用变量在保护机制下工作,就不会出现“随机”变化,这时叫线程安全。

首先,可重入和线程安全是两个并不等同的概念,一个函数可以是可重入的,也可以是线程安

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值