阅读:1341回复:11
我在要在read例程中,写一个定时器!在没有数据的情况下等待几秒种。怎么实现?
我在要在read例程中,写一个定时器!在没有数据的情况下等待几秒种。怎么实现?
我在读的情况下,写一个事件,一直等在那里,这样对其他的线程有没有影噢? |
|
沙发#
发布于:2002-11-22 11:17
快点回答我好吗?
请高手指点? 谢谢啦!!!!!!!!!!!!!!1 |
|
板凳#
发布于:2002-11-22 11:41
用内核定时器还是看门狗定时器?
|
|
|
地板#
发布于:2002-11-22 11:45
什么都行,只要能实现就行了。
但是处理的快一点。 |
|
地下室#
发布于:2002-11-22 11:47
我在读的情况下,写一个事件,一直等在那里,这样对其他的线程有没有影噢?
|
|
5楼#
发布于:2002-11-22 14:33
快点中啊。
帮帮忙啦。 这样太没有意思了。 每一次上来提问,都没有人回答我!! 这次又不是很少见的问题,应该有人回答吧。 |
|
6楼#
发布于:2002-11-22 14:36
我在读的情况下,写一个事件,一直等在那里,这样对其他的线程有没有影噢?
这可能引起线程同步问题。 你的读是采用中断方式吗? 你的问题有点不明确。 |
|
|
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函数, 则定时器放弃原来的时间重新开始倒计时) |
|
|
8楼#
发布于:2002-11-22 15:11
我的读,是只直接读取一片内存中数据。
定义了几种读的方法, 1、是读取内存中的数据,马上返回(有没有数据都返回)。 2、如果没有数据,那么在那待一段时间,如果没有那就返回,如果有那就马上返回。 3、一直等在那里,读取数据,真到有数据返回。 怎么实现最好? 以上说是定时器,如果时间没有到,就有数据了,那就可以返回了,那怎么实现。 我想还是用线程的好,但我不知道,我读的例程中,用一个事件一真等在那里,对其他的Write例程什么的有没有影响? |
|
9楼#
发布于:2002-11-22 17:33
老兄,还未解决?
|
|
|
10楼#
发布于:2002-11-25 09:38
是的。
|
|
11楼#
发布于:2002-12-06 12:10
1。在操作系统下开发,win 和linux都有阻塞,可以让进程睡眠。
2。不再操作系统下,可以利用中断方式。定时方式。 |
|
|