C#进程间通信的问题,100分求教!

旭阳 2009-11-25 04:05:56
是这样的,我服务器(win2003)上有二个程序,假定是serv和cli吧。
我希望有这样的效果:

不管cli有没有启动,serv写数据到某个地方(可以是管道或其它),
cli可能是20个同时运行的,它们都要去读取serv写的内容,
假定serv写1000个数据,单个cli每次只能读10个(读完后休息一下又去读),
余下1990个其它cli读取。。
------
相当于多个cli争资源了。

不知道如何来实现?
...全文
132 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
旭阳 2009-11-25
  • 打赏
  • 举报
回复
不太明白,楼上的意思。

我倒想了一个通过socket的方法,实现起来麻烦一些。
server需要写数据时,通过socket挨个向空闲的cli发data。
wt_sanlian 2009-11-25
  • 打赏
  • 举报
回复
.net remoting!

或 framework3.5 的 WCF.
shalen520 2009-11-25
  • 打赏
  • 举报
回复
生产者-消费者问题
wenbin 2009-11-25
  • 打赏
  • 举报
回复
在CODEPROJECT上面有专门封装了管道和共享内存的操作

旭阳 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 angel6709 的回复:]
引用 2 楼 e_job 的回复:
用数据库不太合适。。

用数据库的话,cli需要不停的去扫描表里的数据,这样做不太科学。

而且假如A_cli读取表里10个数据(A_cli需要将这10个数据删除),但在A_cli未删除之前B_cli也读到了也可能。。

lock?
[/Quote]


A读10个后马上lock这10条记录,然后b读余下的?
也许可以,但感觉a,b,c,d,e.....也许几十个cli不断去操作数据库,开销过大。
旭阳 2009-11-25
  • 打赏
  • 举报
回复
管道,共享内存可能都能实现,只是实在是对C#不太熟,不知道具体?

比如管道,在UNIX下有种管道是有以下特征的:
1、非阻塞的。
2、可以指定读的数据长度。
3、读完后这段数据就没有了,管道中只余下剩余的数据。
2、进程间是采用select函数来等待数据的。

只是不知道c#是如何实现的,看了一个管道的例子好像不能实现。
tommir3 2009-11-25
  • 打赏
  • 举报
回复
进程间通信,管道.....
学习,帮顶
angel6709 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 e_job 的回复:]
用数据库不太合适。。

用数据库的话,cli需要不停的去扫描表里的数据,这样做不太科学。

而且假如A_cli读取表里10个数据(A_cli需要将这10个数据删除),但在A_cli未删除之前B_cli也读到了也可能。。
[/Quote]
lock?
wenbin 2009-11-25
  • 打赏
  • 举报
回复
不知共享内存+信号量能否实现你的需求
旭阳 2009-11-25
  • 打赏
  • 举报
回复
用数据库不太合适。。

用数据库的话,cli需要不停的去扫描表里的数据,这样做不太科学。

而且假如A_cli读取表里10个数据(A_cli需要将这10个数据删除),但在A_cli未删除之前B_cli也读到了也可能。。
angel6709 2009-11-25
  • 打赏
  • 举报
回复
数据库?

111,123

社区成员

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

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

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