Com中使用Static变量的问题,并发访问内存分配的问题,有难度,请指教,顶者有分!
程序的简单介绍:
API的类中有一个static变量
static map<const _bstr_t, StructA *> StaticA;
key是用户的passportID
1.在开始使用API时
StaticA.insert()
增加当前用户的记录
2.停止使用API时
根据当前用户的passportID
读出StaticA中存储的StructA的信息(释放资源用)
然后删除StaticA中用户的passportID对应的记录
StaticA.erase(passportID)
3.在卸载COm对象时
查询出StaticA所有的项目(释放资源用),并删除所有的项目。
问题:
并发访问时,停止使用API时,static变量在删除StaticA.erase(passportID)
和在开始使用API时 ,增加时StaticA.insert()出现了错误。
发生频率:半年一次。
原计划,将Static变量编程非Static变量,但是这样在COm卸载时的代码无法实现。
请问,有没有好的解决方法,不将Static变量编程非Static变量,而且还能解决并发访问时,静态变量内存分配和释放的问题。