wanghondg
驱动牛犊
驱动牛犊
  • 注册日期2002-04-22
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2207回复:3

多线程调用PLX SDK API 函数问题

楼主#
更多 发布于:2002-04-24 15:47
我在使用PCI9030时,需要多线程调用PLX SDK中的一些函数,对两个不同的地址空间(A、B)写入数据,然后分别等待读出有效数据。我用了2种方法测试操作速度:
1。在一个函数里(不使用多线程),先向A写入数据,再向B写入数据,然后循环读出A、B的数据有无变化,哪个有变化则哪个地址的操作结束。
2。使用两个线程,
ThreadA:向A写入数据,然后循环读出A的数据有无变化,有则结束
ThreadB:向B写入数据,然后循环读出B的数据有无变化,有则结束
同时启动两个线程。

理论上分析因为第2种方法使用了多线程,较少浪费数据操作时间,应该速度比第1种快,但恰好相反,第1种的速度却比第2种快的多。
如果从硬件上理解的话,每次对9030的操作都是独占的。我比较困惑。PLX SDK所提供的函数是否要有支持多线程的功能(或者我的概念根本就是错的),怎么使用多线程会提高速度,请各位大侠指教!
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-04-25 15:26
用户被禁言,该主题自动屏蔽!
wuqix
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2008-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-25 17:12
只有一块硬件,多线程一般没意义,应用层的io到了核心层还是只经过一个驱动,驱动一般内部排个队列,把这些请求都串行。如果硬件支持多个通道,相应的驱动也同时维护几个通道,并且有自己的策略来管理这些通道,那么应用层的多线程才能起点作用。

多线程的意思是支持几个应用层的程序同时打开它,而速度的瓶颈往往不在应用层进程和核心层的连接数上,而是在硬件的速度和驱动软件读取速度上。所以这个多线程不意味着速度提高。你是把这个多线程的道理和应用层的网络蚂蚁之类的搞混了。
wanghondg
驱动牛犊
驱动牛犊
  • 注册日期2002-04-22
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-26 09:06
多谢2位指点,我也认为多线程对硬件访问速度提高不了,我可以优化一下硬件访问时序来提高速度。
游客

返回顶部