C++多线程(3) | 您所在的位置:网站首页 › timezones和unlock的区别 › C++多线程(3) |
当在多线程中创建单例类时,可能会面临这个问题:当线程1在初始化单例类对象执行GetInstance()函数时,执行完if (m_instance == NULL)语句后被切换到线程2执行GetInstance()函数,由于线程1并没有执行m_instance = new MyCAS()语句,导致线程2在执行if (m_instance == NULL)时判断没有初始化m_instance,进而执行了m_instance = new MyCAS()语句,当再切换回线程1时,又执行了一遍m_instance = new MyCAS()语句,最终导致这个单例类对象被创建了两个。总之,当在多线程中创建单例类时,可能会创建多个单例类对象。 |
CopyRight 2018-2019 实验室设备网 版权所有 |