当构造函数泄露this指针时

            当一个类正在构造时在构造函数中将this泄露给了其它对象,这在单线程串行执行情况下可能没有什么问题,但是在多线程下那么问题就比较大了。比如线程1负责构造这个对象A但是在构造函数中将this指针泄露给了其它线程所调用的对象B,不巧的是其它线程所调用的对象B看见A有些不爽将其析构了。那么最后A自以为一切构造好了返回,线程1然后对这个A操作,最后可怕的错误(比如段错误)无穷无尽的折磨线程1......

           模拟这个问题:假设有一个人A,餐馆B,A没钱就去餐馆B点菜吃饭,单线程模式下:A进入餐馆点菜->餐馆B炒菜(不辞辛劳)->A吃完了没钱付->餐馆B大为光火.....此后出现了一幕CATV不会报道的事件.......

           但是聪明的餐馆B现在学聪明了,也会利用高科技了,利用某种技术可以检测到用户是否有钱(比如和银行通奸哈哈)从而开启了个后台进程检测客户没钱立马轰走.....那么问题变成如下:

           线程1:客人A进入餐馆B点菜,点菜这个操作这里强加为:A将this指针泄露给了B

           线程2:餐馆B发现有客人来了->获取该客人的信息(这里是this指针)->通过科学技术发现客户没钱->不准厨房炒菜了,立马暴打客户一顿

           在这种模式下显然客户不可能吃完饭再挨揍了.....这就是泄露this指针的可怕之处,我还没有构造好,其它线程就把我给干掉了....我以后还咋活啊???

#include<iostream>
#include<unistd.h>
#include<pthread.h>
#include<assert.h>
using
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值