brk1985 发表于 2008-5-27 17:14:45

我设置了多个定时器,怎么判别优先级?

:) :)
结果相当乱,执行顺序都乱了。
另外,延时知道了,哈哈Delay(1.0);//延时1秒 :D :D :D

十分感谢cpubbs。

[ 本帖最后由 brk1985 于 2008-5-28 13:42 编辑 ]

cpubbs 发表于 2008-5-28 09:33:16

http://www.cpubbs.com/bbs/thread-56183-1-1.html

兄弟看看这个,您是开了又关了!这样不行呢!

brk1985 发表于 2008-5-28 11:53:59

其实我最想知道的是:
我设置了多个定时器,怎么判别优先级?是不是需要判别优先级?
另外,延时怎么做?sleep函数?
labwindows/cvi如何使用sleep函数?

cpubbs 发表于 2008-5-28 12:20:20

老兄试试delay()这个函数来延时,sleep我再看一下!!

cpubbs 发表于 2008-5-28 12:20:51

好像以前看过SLEEP函数,现在好像找不着了!

cpubbs 发表于 2008-5-28 12:22:33

int SuspendTimerCallbacks (void);
这个能将其他定时器暂停,如果是高优先级的,可以用它暂停其他!不过不太清楚老兄的具体需求,说说您的需求,再想办法!

brk1985 发表于 2008-5-28 13:07:53

SuspendTimerCallbacks 停止所有,ResumeTimerCallbacks重启所有。

我在StartCallback函数(按钮Start的回调函数)中
int CVICALLBACK StartCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
    case EVENT_COMMIT:
            ResumeTimerCallbacks();//启动所有定时器
      SetCtrlAttribute (panelHandle, PANEL_Timer1, ATTR_ENABLED, 1);
            SetCtrlAttribute (panelHandle, PANEL_Timer2, ATTR_ENABLED, 1);
            SetCtrlAttribute (panelHandle, PANEL_Timer3, ATTR_ENABLED, 1);
         //Timer3执行完成后SuspendTimerCallbacks        
         break;
   }       
         return 0;
}
希望按顺序,点击Start按钮,先执行Timer1,再执行Timer2,再执行Timer3,结果不行。存在竞争,有时候Timer2还没执行,就执行Timer3。特别是再次点击Start按钮、启动所有定时器(ResumeTimerCallbacks)时,执行顺序更乱。

brk1985 发表于 2008-5-28 13:34:21

原帖由 cpubbs 于 2008-5-28 12:22 发表 http://www.cpubbs.com/bbs/images/common/back.gif
int SuspendTimerCallbacks (void);
这个能将其他定时器暂停,如果是高优先级的,可以用它暂停其他!不过不太清楚老兄的具体需求,说说您的需求,再想办法!

labwindows/cvi可以设置优先级?怎么设置呢?另外,SuspendTimerCallbacks停止所有定时器。

phantam_lf 发表于 2009-5-5 09:31:54

定时器的优先级是不是已经封装好的呢?但是不知道其优先级到底是多少

netcreature 发表于 2009-5-5 16:55:57

楼主大约是写汇编或嵌入式开发太久了!
定时器的优先级只针对操作系统而言。一种语言中的所有定时器的优先级都一样,没有优先级高低的说法!

hubeiyk 发表于 2009-5-7 09:17:50

定时器的线程优先级比较低,容易受其他线程的干扰
页: [1]
查看完整版本: 我设置了多个定时器,怎么判别优先级?