lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1541回复:5

使用多线程可否提高数据处理速度?

楼主#
更多 发布于:2002-11-23 18:11
WIN2K环境下,应用程序将多个文件数据读出,经过处理后通过PCI卡输出。
APP使用异步写操作输出数据,驱动程序使用中断驱动方式,即在中断服务中检测是否有当前的IRP,有则申请DPC处理,没有则返回。因此APP必须在PCI的两次中断之间完成数据处理工作,否则IRP不能及时地发下去,将有中断落空。

由于数据处理量相当大,现在这个问题已经暴露出来。由于WIN2K是分时系统,我考虑使用多一些线程来处理数据,以更多地占用CPU时间,不知道这样行不行!不知道2K分配CPU时间,是按进程分配还是按线程分配的。

lvhaow
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-23 20:38
能否把应用程序做成两个线程,一个检测中断是否完成(每次进入中断后,设置一Flag为未完成,中断结束前,设置Flag完成);一个发送数据,中断完成就发送;否则,交出所占资源。
lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-11-23 22:31
Gong_XG兄:
早都分成两个线程来处理了,结构正如您所说的那样,读文件和数据处理是放在一起的,现在的情况是这一个线程处理不过来,中断正好丢了一半,而减小了数据处理量,问题就能解决。
目前的情况是:中断间隔不到100ms,而这期间要读32个文件,每个文件读出32K字节,更可恶的是这共计1M字节还要每字节逐位处理,一个线程是完成不了这个计算量了,虽然我的机器并不很差(P4_1.6G_256M),现在想把文件读取部分用一个线程,而数据处理单用一个或更多个线程来做!不知可行否。
lvhaow
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-24 14:08
你先试试,这个周查点资料看看,再给答案!OK
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-11-24 17:40
Gong_XG兄:
早都分成两个线程来处理了,结构正如您所说的那样,读文件和数据处理是放在一起的,现在的情况是这一个线程处理不过来,中断正好丢了一半,而减小了数据处理量,问题就能解决。
目前的情况是:中断间隔不到100ms,而这期间要读32个文件,每个文件读出32K字节,更可恶的是这共计1M字节还要每字节逐位处理,一个线程是完成不了这个计算量了,虽然我的机器并不很差(P4_1.6G_256M),现在想把文件读取部分用一个线程,而数据处理单用一个或更多个线程来做!不知可行否。

我觉得可能时间都花到读取文件上了,数据处理应该够了吧?
可以在一开始就把文件都读到内存去,减少以后读取的时间,试试看?呵呵。
lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-11-24 20:56
arthurtu兄:
读文件花了不多少时间,而且我用了较大的读文件缓冲(32M)。我尝试过把读文件部分取消掉,把驱动程序改成假操作(并不真的输出,只是响应中断,直接完成IRP),这样系统监视器所查到的CPU占用,就全部都是数据操作造成的了。而资源占用量只减少了30%。而这30%实际上是驱动节省下来的。

驱动占用资源也是个突出的问题,我另帖提问。
lvhaow
游客

返回顶部