提问关于com的小问题

ljmscsq 2009-02-14 03:52:09
我写了一个com组件,功能是给网页提供查询的功能。这个组件是放在服务器端的,当所有的网页用户使用查询功能的时候,网页程序将用户查询的文字当作参数传递给com中的函数,通过这个函数在数据库中查找并将结果返回给网页显示。
上次我问了个在com中共享变量的问题,现在com我写完了(VC ATL)。我将一个map<string,string>的变量当成全局变量在DLL_PROCESS_ATTACH的时候进行初始化。得到了想要的效果。
当我在一个浏览器中开一个页进行查询,能够查到结果!
当我在一个浏览器中开2个页,分别写入要查询的语句后,快速的点两个页的查询按钮,两个页都能查询到结果。
但是当我打开两个浏览器,在每个浏览器中各打开一个页,写入要查询的语句,执行到一半就会奔溃。
这个是为什么?我想应该是我com写的有问题。但是不知道具体原因。导致这种错误一般是怎么造成的?用单列模式能不能解决?
大侠们帮帮我!情人节在家写程序,不容易啊!
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_rockboy 2009-02-15
  • 打赏
  • 举报
回复
com有四种套间类型Single、apartment、free、both四种COM,一个进程中最多只允许存在一个Single组件的实例,而允许存在多个apartment组件的实例。如果你的组件是Single,又共享map <string,string>,map不是线程安全的,需要自己实现同步。处理不好,内存很容易错误。
waizqfor 2009-02-14
  • 打赏
  • 举报
回复
帮顶了
ljmscsq 2009-02-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 a_rockboy 的回复:]
DLL_PROCESS_ATTACH的时候设置一个初始化标识,或者判断map <string,string>的size,决定是否初始化。应该是COM的套间问题。你用的单间模式么。
[/Quote]

我没用单间模式。单间模式是怎么个意思?我还不是很明白,那位能给我简单讲讲。
问5楼,为什么判断map <string,string>的size,原因是什么?
oyljerry 2009-02-14
  • 打赏
  • 举报
回复
服务器端对多个客户端的请求处理有问题,造成出错等...
a_rockboy 2009-02-14
  • 打赏
  • 举报
回复
DLL_PROCESS_ATTACH的时候设置一个初始化标识,或者判断map <string,string>的size,决定是否初始化。应该是COM的套间问题。你用的单间模式么。
九桔猫 2009-02-14
  • 打赏
  • 举报
回复
可怜楼主,不过不会COM,心有余而力不足
ljmscsq 2009-02-14
  • 打赏
  • 举报
回复
我应该明天问来着,今天人好少。
  • 打赏
  • 举报
回复
没学过com。。顶顶
toadzw 2009-02-14
  • 打赏
  • 举报
回复
up

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧