阅读:1792回复:7
95分请教:如何提高程序的响应速度
请问如何提高程序的实时响应速度,比如,我正在做一个网络程序,这个程序不定期向网络发送数据包,当程序要发送数据包时,要求它能马上占用cpu,不管当前cpu是否被其它的进程使用,直到数据包被发送出去为止(也就是说我们的程序几乎要达到实时响应的性能),在接收数据的时候也一样。要达到这种效果有可能吗,简单的通过VC的SetPriorityClass将我们的程序提高实时级别能不能实现,还是要通过别的途径??往各位大侠赐教,讨论一下实现的可能性也好。
|
|
沙发#
发布于:2004-06-16 19:04
在驱动中把你的级别设为DPC以上.,防止被切换掉
|
|
|
板凳#
发布于:2004-06-16 19:44
在驱动中把你的级别设为DPC以上.,防止被切换掉 不可以,否则你的应用程序出现页面错误的话,那你的系统就等于死了,除非你可以保证你的应用程序全部代码和数据以及分配的内存堆还有调用的DLL模块等等都是永远驻留在物理内存的,不是任何代码都可以提高IRQL的。 我的观点:在Windows上要实现硬实时多任务的话,不是说不可能,但是非常困难,不是一二行代码可以解决问题的,不过如果要做到100微秒(>50微秒)左右的响应性能还是可以想办法做到的,再小的话精度就比较难以保证。 |
|
地板#
发布于:2004-06-16 20:00
我的程序的目的是:就算系统处于极度繁忙的情况下,我们都能保证数据包能够尽快的发送出去。整个过程从响应到发送完毕耗时不超过3ms,但我发现如果程序在发送数据的时候,打开一个较大的进程,程序的响应时间就发生了跳变,从<1ms一下子跳到好几十ms,实时性根本不能保证,好郁闷好郁闷!!!
|
|
地下室#
发布于:2004-06-17 18:51
我认为如果你不借助于其它硬件比如硬件定时器的帮助,仅仅通过应用程序的调度来实现这一点很难,Windows不能保证这一点,这取决于你的系统当前的状态。
|
|
5楼#
发布于:2004-06-17 19:41
碰见过好几次这样的了,windows就不是个实时的OS,怎么大家偏偏还要弄实时的活给它尼?设计思路是不是应该改改?
|
|
6楼#
发布于:2004-06-18 09:27
Windows 可能真不适应这样的工作~~不过向楼主说的
“从<1ms一下子跳到好几十ms”不太可能把,这也太慢了~~ |
|
|
7楼#
发布于:2004-06-22 15:38
散分了,人人有份,永不落空啊,呵呵,虽然问题没有解决,但还是很感谢大家的帮忙,谢谢
|
|