yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1341回复:11

我在要在read例程中,写一个定时器!在没有数据的情况下等待几秒种。怎么实现?

楼主#
更多 发布于:2002-11-22 10:53
我在要在read例程中,写一个定时器!在没有数据的情况下等待几秒种。怎么实现?

我在读的情况下,写一个事件,一直等在那里,这样对其他的线程有没有影噢?
yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-22 11:17
快点回答我好吗?
请高手指点?
谢谢啦!!!!!!!!!!!!!!1
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-22 11:41
用内核定时器还是看门狗定时器?
生命驱动,活力无限!
yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-22 11:45
什么都行,只要能实现就行了。
但是处理的快一点。
yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-22 11:47
我在读的情况下,写一个事件,一直等在那里,这样对其他的线程有没有影噢?
yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-22 14:33
快点中啊。
帮帮忙啦。
这样太没有意思了。
每一次上来提问,都没有人回答我!!
这次又不是很少见的问题,应该有人回答吧。
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-22 14:36
我在读的情况下,写一个事件,一直等在那里,这样对其他的线程有没有影噢?

这可能引起线程同步问题。
你的读是采用中断方式吗?


你的问题有点不明确。
生命驱动,活力无限!
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-22 14:42
那你用内核定时器好了,它还可以起同步作用。

通知定时器用起来象事件
例如创建一个通知定时器对象并等到它达到预定时间。
首先,我们在非分页内存中分配一个KTIMER对象。然后,我们在低于或等于
DISPATCH_LEVEL级上初始化这个定时器对象:

PKTIMER timer;      //  someone gives you this
ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
KeInitializeTimer(timer);
 

在此,定时器处于非信号状态,它还没有开始倒计时,在这样的定时器上等待的线程
永远得不到唤醒。为了启动定时器倒计时,我们调用KeSetTimer函数:

ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
LARGE_INTEGER duetime;
BOOLEAN wascounting = KeSetTimer(timer, duetime, NULL);

返回值如果为TRUE,则表明定时器已经启动。(在这种情况下,如果我们再调用KeSetTimer函数,
则定时器放弃原来的时间重新开始倒计时)
生命驱动,活力无限!
yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-22 15:11
我的读,是只直接读取一片内存中数据。
定义了几种读的方法,
1、是读取内存中的数据,马上返回(有没有数据都返回)。
2、如果没有数据,那么在那待一段时间,如果没有那就返回,如果有那就马上返回。
3、一直等在那里,读取数据,真到有数据返回。
怎么实现最好?
以上说是定时器,如果时间没有到,就有数据了,那就可以返回了,那怎么实现。
我想还是用线程的好,但我不知道,我读的例程中,用一个事件一真等在那里,对其他的Write例程什么的有没有影响?
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-22 17:33
老兄,还未解决?
生命驱动,活力无限!
yhaiquan
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-25 09:38
是的。
JIZHAOHUI
驱动牛犊
驱动牛犊
  • 注册日期2002-08-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-06 12:10
1。在操作系统下开发,win 和linux都有阻塞,可以让进程睡眠。
2。不再操作系统下,可以利用中断方式。定时方式。
Sarah
游客

返回顶部