map用索引作下标之后,再插值时报错.

本文探讨了在并发环境中如何解决线程安全问题,通过使用互斥锁和线程本地存储来确保线程间的数据一致性。重点分析了在特定场景下使用线程本地存储的必要性和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DBMgr* ConnPool::GetConn()                                                      
{                                                                               
        pthread_t id = pthread_self();                                          
        //unsigned long  id = pthread_self();                                   
        ConnMap::iterator it = conn_map_.find(id);                              
        if ( it == conn_map_.end()) {                                           
                                                                                
                                                                                
        //if (!conn_map_[id]) {                                                 
                DBMgr* dbmgr = new DBMgr();                                     
                dbmgr->Init(ip_, port_, name_, user_, password_);               
                std::pair<map<pthread_t,DBMgr*>::iterator, bool > ret =         
                //std::pair<map<unsigned long ,DBMgr*>::iterator, bool > ret =  
                conn_map_.insert(make_pair<pthread_t, DBMgr*>(id, dbmgr));      
                //conn_map_.insert(make_pair<unsigned long, DBMgr*>(id, dbmgr));
                if (!ret.second) {                                              
                        printf("insert err\n");                                 
                }                                                               
        //}                                                                     
        }                                                                       
        return conn_map_[id];                                                   
}                                                                               

发现之前只要用到 conn_map_[id]这样的用数组索引作为下标的取操作,再插入的时候就会出问题....

具体什么原因可能要看代码才知道了,,,

 

 

先记下来,以作备忘.

转载于:https://www.cnblogs.com/vimmer/archive/2012/08/10/2632223.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值