问题没解决,再来一贴,c#多线程调用dll,数据冲突的问题。

rokky 2014-10-14 01:23:05
最近在学习编写c#socket 多线程 异步处理客户端请求的一些东西。客户端发出请求,服务器端根据请求类型,调用不同的dll来进行异步的具体处理,这些都实现了。但是现在发现个问题,在比较多并发的情况下,调用dll处理后,会得到不正确的结果,感觉是A客户端发出的请求,接受到的处理结果,其实是由B客户端发出请求的处理结果。这个是怎么回事呢?或者说这种处理方式本身就是不正确的,应该怎么解决呢?
...全文
250 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-10-14
  • 打赏
  • 举报
回复
多线程调用dll,你的处理结果保存在哪里? 如果仅仅是一个全局静态变量,或即使不是静态,全局也只定义了同一组变量,那么必然导致数据冲突 你需要将dll封装到类里去,不同的用户各自实例化一个出来
rokky 2014-10-14
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
也就是说你没有将信息和客户端连接作对应,所以信息错位,所以加一些头信息,用来和连接匹配 同时做好同步,不要另外一个线程改写了当前线程的数据
做好同步?能具体说说吗?
rokky 2014-10-14
  • 打赏
  • 举报
回复
不是的,我觉得是在多线程调用dll时产生的问题
bdmh 2014-10-14
  • 打赏
  • 举报
回复
也就是说你没有将信息和客户端连接作对应,所以信息错位,所以加一些头信息,用来和连接匹配
同时做好同步,不要另外一个线程改写了当前线程的数据
rokky 2014-10-14
  • 打赏
  • 举报
回复
dll也是c#编写的。封装了一些方法,处理的结果返回string。

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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