lovealan
驱动牛犊
驱动牛犊
  • 注册日期2007-01-19
  • 最后登录2013-12-19
  • 粉丝0
  • 关注0
  • 积分133分
  • 威望26点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1644回复:3

驱动里的线程如何与应用层的线程同步?

楼主#
更多 发布于:2007-04-04 11:08
  我的程序里创建了2个线程,一个是驱动里的线程,一个是在应用层的线程。驱动里的线程用来接收数据,应用层的线程用来取走数据,我用远程调试工具查看两个线程的优先级都是251,但实际上驱动里的线程执行得要比应用层的线程快,按道理说如果优先级相同,所分配的处理器资源应该是均等才对啊,我想让两个线程的执行速率相同,请问这是怎么回事?
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-04-04 18:08
是否可以通过建立信号量CreateMutex来同步呢?
也不知道对不对
bluempire
驱动牛犊
驱动牛犊
  • 注册日期2005-12-03
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分51分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-05 14:45
可以通过SetEvent 两边共同约定一个事件句柄即可。
但不知效率如何
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-05 21:33
引用第0楼lovealan2007-04-04 11:08发表的“驱动里的线程如何与应用层的线程同步?”:
  我的程序里创建了2个线程,一个是驱动里的线程,一个是在应用层的线程。驱动里的线程用来接收数据,应用层的线程用来取走数据,我用远程调试工具查看两个线程的优先级都是251,但实际上驱动里的线程执行得要比应用层的线程快,按道理说如果优先级相同,所分配的处理器资源应该是均等才对啊,我想让两个线程的执行速率相同,请问这是怎么回事?



1.相同优先级的线程驱动中的要比应用层的优先级更高,驱动中的就是要快.
2.这种同步问题可以参考串口的作法:
串口驱动在被打开时会创建一个EVENT,
应用软件调用串口驱动的一个IOCTL,等待这个EVENT,
当串口驱动收到数据时就设置这个EVENT,
这样,应用程序就知道串口驱动中有数据到达,可以读取了.
学海无涯
游客

返回顶部