日期:2014-05-20  浏览次数:21032 次

这种程序写成什么类型的比较合适?
程序A:有界面,是windows应用程序

程序B:无界面,被程序A调用,程序B在后台执行自己的运算,长时间的运行,程序A是短时间的运行,程序B可以脱离A自己运行,但是程序B需要用到程序A中的数据

程序B是长时间的运行,大概有一百个运行的分支,怎么写可以让程序B不太占用CPU,线程可以实现?或者还有没有比线程更小的执行单位?

------解决方案--------------------
TO:程序B是长时间的运行,大概有一百个运行的分支,怎么写可以让程序B不太占用CPU,线程可以实现?或者还有没有比线程更小的执行单位?

100个运行分支?除了线程似乎没有更好的方法了,不过即使用线程,开100个也够你受的了...


------解决方案--------------------
大概有一百个运行的分支
应该是大约100个可能出现的情况吧 哪会这么多线程同时跑
------解决方案--------------------
SQL数据库不就是这样的吗
参考一下吧
个人觉得写成服务比较好
------解决方案--------------------
写成服务 应该比较好点

------解决方案--------------------
因为B是被程序A调用,所以不用写成服务。应该没有比线程更小的执行单位了,用线程就挺好的。
------解决方案--------------------
线程池
------解决方案--------------------
帮顶了!
------解决方案--------------------
A可以在新建进程时,通过命令行将数据传给B。
B不太可能用100个分支最好用线程池,可以节约资源。
实现的话,就要看你熟悉哪种语言了。个人觉得VC好点,文档多,对底层控制容易实际。
------解决方案--------------------
TO:具体是这样的
程序A用来定义100个运算规则
程序B在后台运行,对每个规则都要实时的计算(大概每三秒),对每一个规则都会有不同的互不相干的处理


线城池啥。

报警系统的实时性要求不高的情况下,用1个主线程轮寻这些数据啥。A、B都在不停的运行。将数据保存在每个A中,分散保存。让B计算,结果放到A中。

或者思路二:
B使用监听,不管怎么实现。可能是一个循环检测某个端口或者某个Socket服务。A实现中断,往B的端口发送数据,B开启一个线程进行处理。如果超过N个,看计算机的承受能力,让A等待...
------解决方案--------------------
B作为.net Remoting 服务器端,
A作为.net Reomoting 客户端,

对于B依赖于A的那部分提取出来作为C,
让A,B都分别依赖于c。这样结构会好一点。