17 个解决方案
#1
用 timer 可以让线程变得没有用出,不过你用线程好灵活的多。
你一般都是 八个八个的用??太吓人了。
你一般都是 八个八个的用??太吓人了。
#2
两种可能都有!关键是任务的执行时间!你为什么不全部采用一个方式哪?都用sttimer或 thread.
#3
我感觉你的要求应该先打开8个线程,每个线程设自己的定时器进行处理。8个定时器不会死机
#4
10Ms计时器不准确的。
用工作线程
用工作线程
#5
同意,10ms更本不可能精确计时
#6
用线程吧,10ms定时用SetTimer()是不行了,或许只能用多媒体定时器了,那个精确一些。
#7
SetTimer() 这个定时的最小时间是18.6ms(100/6 ms) 左右
要求更高的精度那要用的定时器挺复杂的,我都不懂得怎么弄了
要求更高的精度那要用的定时器挺复杂的,我都不懂得怎么弄了
#8
我靠,怎么和我现在的程序是一模一样的,我是用定时器启动线程的。
#9
10ms可能倒不了这个精度
你不如用内核方式的等待时钟
createwaitabletimer()
你不如用内核方式的等待时钟
createwaitabletimer()
#10
线程效率高,建议用线程
#11
谢谢
#12
有没有实例代码给我一个
#13
其实很多东西在一个线程就可以了,没有必要开那么多线程
#14
谢谢各位,看来关注者甚少
#15
别用定时器, 我用定时器显示时间,900毫秒刷一次, 碰到系统忙的时候, OnTimer的显示时间模块函数定时器没有得到执行
用线程可以自己定义这个线程的优先级,挺不错的
用线程可以自己定义这个线程的优先级,挺不错的
#16
注意系统资源.
#17
多媒体Sleep()呵呵,大家用这个吧。
BOOL MySleep(DWORD dwInterval)
{
BOOL bNormal = TRUE;
LARGE_INTEGER frequence, privious, current, interval;
if(!QueryPerformanceFrequency( &frequence))
{
::MessageBox(NULL, "Your computer hardware doesn't support the high- resolution performance counter",
"Not Support", MB_ICONEXCLAMATION | MB_OK); //或其它的提示信息
return FALSE;
}
interval.QuadPart = frequence.QuadPart * dwInterval / 1000000;
bNormal = bNormal && QueryPerformanceCounter( &privious );
current = privious;
while( current.QuadPart - privious.QuadPart < interval.QuadPart )
bNormal = bNormal && QueryPerformanceCounter( &interval );
return bNormal;
}
//使用方法
OnTimer(...)
{
yourproc()
mysleep(200);
}
BOOL MySleep(DWORD dwInterval)
{
BOOL bNormal = TRUE;
LARGE_INTEGER frequence, privious, current, interval;
if(!QueryPerformanceFrequency( &frequence))
{
::MessageBox(NULL, "Your computer hardware doesn't support the high- resolution performance counter",
"Not Support", MB_ICONEXCLAMATION | MB_OK); //或其它的提示信息
return FALSE;
}
interval.QuadPart = frequence.QuadPart * dwInterval / 1000000;
bNormal = bNormal && QueryPerformanceCounter( &privious );
current = privious;
while( current.QuadPart - privious.QuadPart < interval.QuadPart )
bNormal = bNormal && QueryPerformanceCounter( &interval );
return bNormal;
}
//使用方法
OnTimer(...)
{
yourproc()
mysleep(200);
}
#1
用 timer 可以让线程变得没有用出,不过你用线程好灵活的多。
你一般都是 八个八个的用??太吓人了。
你一般都是 八个八个的用??太吓人了。
#2
两种可能都有!关键是任务的执行时间!你为什么不全部采用一个方式哪?都用sttimer或 thread.
#3
我感觉你的要求应该先打开8个线程,每个线程设自己的定时器进行处理。8个定时器不会死机
#4
10Ms计时器不准确的。
用工作线程
用工作线程
#5
同意,10ms更本不可能精确计时
#6
用线程吧,10ms定时用SetTimer()是不行了,或许只能用多媒体定时器了,那个精确一些。
#7
SetTimer() 这个定时的最小时间是18.6ms(100/6 ms) 左右
要求更高的精度那要用的定时器挺复杂的,我都不懂得怎么弄了
要求更高的精度那要用的定时器挺复杂的,我都不懂得怎么弄了
#8
我靠,怎么和我现在的程序是一模一样的,我是用定时器启动线程的。
#9
10ms可能倒不了这个精度
你不如用内核方式的等待时钟
createwaitabletimer()
你不如用内核方式的等待时钟
createwaitabletimer()
#10
线程效率高,建议用线程
#11
谢谢
#12
有没有实例代码给我一个
#13
其实很多东西在一个线程就可以了,没有必要开那么多线程
#14
谢谢各位,看来关注者甚少
#15
别用定时器, 我用定时器显示时间,900毫秒刷一次, 碰到系统忙的时候, OnTimer的显示时间模块函数定时器没有得到执行
用线程可以自己定义这个线程的优先级,挺不错的
用线程可以自己定义这个线程的优先级,挺不错的
#16
注意系统资源.
#17
多媒体Sleep()呵呵,大家用这个吧。
BOOL MySleep(DWORD dwInterval)
{
BOOL bNormal = TRUE;
LARGE_INTEGER frequence, privious, current, interval;
if(!QueryPerformanceFrequency( &frequence))
{
::MessageBox(NULL, "Your computer hardware doesn't support the high- resolution performance counter",
"Not Support", MB_ICONEXCLAMATION | MB_OK); //或其它的提示信息
return FALSE;
}
interval.QuadPart = frequence.QuadPart * dwInterval / 1000000;
bNormal = bNormal && QueryPerformanceCounter( &privious );
current = privious;
while( current.QuadPart - privious.QuadPart < interval.QuadPart )
bNormal = bNormal && QueryPerformanceCounter( &interval );
return bNormal;
}
//使用方法
OnTimer(...)
{
yourproc()
mysleep(200);
}
BOOL MySleep(DWORD dwInterval)
{
BOOL bNormal = TRUE;
LARGE_INTEGER frequence, privious, current, interval;
if(!QueryPerformanceFrequency( &frequence))
{
::MessageBox(NULL, "Your computer hardware doesn't support the high- resolution performance counter",
"Not Support", MB_ICONEXCLAMATION | MB_OK); //或其它的提示信息
return FALSE;
}
interval.QuadPart = frequence.QuadPart * dwInterval / 1000000;
bNormal = bNormal && QueryPerformanceCounter( &privious );
current = privious;
while( current.QuadPart - privious.QuadPart < interval.QuadPart )
bNormal = bNormal && QueryPerformanceCounter( &interval );
return bNormal;
}
//使用方法
OnTimer(...)
{
yourproc()
mysleep(200);
}