我使用map
On 6月26日, 下午3时35分, "邱宇舟" <
qbowa...@gmail.com> wrote:
> 用boost的multi_index库可以多个键
> 像这样
>
> typedef multi_index_container<
> User,
> indexed_by<
> ordered_unique<member<User,SystemAddress,&User::address> >,
> ordered_unique<member<User,boost::uint64_t,&User::userUniID> >
> >
> > tUserList;
>
> 2008/6/26 小贵子 <
xgz...@gmail.com>:
>
>
>
> > 如果要查找,那怎么办?
>
> > 2008/6/26 杨光 <
yangguang2...@gmail.com>:
>
> > 为什么要用MAP呢?用verctor;list不很好吗?
> >> struct netinfo
> >> {
> >> socket sock;
> >> int userid;
> >> bool isuse;//是否使用
> >> }
> >> vector<netinfo> netlist;或 list<netinfo> netlist;
>
> >> 2008/6/23 stephen.nil <
stephen....@gmail.com>:
>
> >> Hi,
>
> >>>
http://groups.google.com/group/dev4server/browse_thread/thread/29a910...
>
> >>> 之前这里有过一次讨论,可以先看一看。
>
> >>> Best regards,
>
> >>> stephen.nil
> >>> 2008-06-23
>
> >>> >Hi,大家好!
>
> >>> >如果用map管理会话,用什么作为map的键啊?
>
> >>> >我想到的有:
>
> >>> >1. socket句柄
> >>> >2. 会话指针
> >>> >3. ip和port的组合(要至少6个字节)
> >>> >4. 用户id(需要收到第一个包后才知道)
>
> >>> >大家都是用的哪一个啊!
>
> >>> >我现在用的是socket句柄,但是处理有点罗嗦:在关闭socket的同时,必须将该会话对象从map中移除,否则该socket值
>
> >>> >被系统重新分配后,有可能和map中的对象冲突。
>
> >>> >这样就只有在IO线程中PendingIO返回时,靠会话对象的pendingiocount确定何时删除该会话对象了,因为当一个会话已经关闭,但是还有p-endingio没有返回时,就无法在io线程的外面得到该会话对象了。
>
> >>> >总觉得在一个线程中定期检查会话map中的每一个会话的PedingioCount和是否被关闭标志,再释放该会话比较安全,这样就必须在关闭会话时不能将该-会话从map中移除,这就产生了矛盾
>
> >>> >不知我说清楚了没有,大家又是如何解决该问题的呢?
>
> >>> >谢谢!
>
> > --
> > 一把锋利的宝剑,要经过无数次的磨炼,才从愚钝走向飘逸- 隐藏被引用文字 -
>
> - 显示引用的文字 -