1 软件定时器
缺点1,速度:软件定时器的精度比较低,这是由Windows不实时的特性所决定的,在XP下,如果关闭所有能关闭的进程,MFC的软件定时器可以达到接近15ms的精度,而在Win2000下,其能达到接近10ms的精度。但是实际情况是,有些进程是不可以关闭的,比如说数据库服务器,所以MFC的软件定时器能够达到的精度一般情况下在40ms左右,BCB和delphi就更差一点,大概在55ms左右。QueryPerformanceCounter倒是可以大幅提高精度,但是稳定性欠佳。
缺点2,效率:软件定时器其本质实际上是在消息循环中处理WM_TIMER消息,而WM_TIMER消息在消息队列中是一个低级别的消息,所以定时器并不能完全保证处理时间间隔的准确性。另外,TImer占用的是主线程的资源,看似并行实际上是串行,所以窗体的消息队列一旦堵塞,就会造成系统假死或者运行缓慢,这对于UI来说几乎是无法忍受的。
2 多线程区别
定时器:程序中开启两个定时器,给人的假象是好像是同时进行。。。。其实不然,就是赤裸裸的串行,
除去定时器的串行运行,以及效率不说,他其实和线程差不多少。
如下看两个定时器的运行:
QTImer *time=new QTimer;
time-》start(2000);
connect(time,SIGNAL(timeout()),this,SLOT(slot_time1()));
QTimer *time1=new QTimer;
time1-》start(3000);
connect(time1,SIGNAL(timeout()),this,SLOT(slot_time2()));
void MainWindow::slot_time1()
{
qDebug()《《“------------------time1-------------------”;
for(int i=0;i《30000;i++)
{
for(int n=0;n《65000;n++)
{
;
}
}
qDebug()《《“-------------------------------------------”;
}
void MainWindow::slot_time2()
{
qDebug()《《“***********************time2****************”;
for(int i=0;i《60000;i++)
{
for(int n=0;n《65000;n++)
{
;
}
}
qDebug()《《“********************************************”;
}
在定时器1触发的时候,里面加入延迟,要是线程的话,马上就会运行第二个线程,但是定时器不是,直到第一个运行完毕,才会运行别的。
再看线程:
mythread *th=new mythread;
th-》start();
mythread1 *th1=new mythread1;
th1-》start();
void mythread::run()
{
qDebug()《《“------------------time1-------------------”;
this-》sleep(2);
qDebug()《《“-------------------------------------------”;
}
void mythread1::run()
{
qDebug()《《“********************time2*************************”;
this-》sleep(4);
qDebug()《《“**********************************************”;
}
程序开始线运行线程2,进行4s延迟,在这期间,并没有阻塞,而是去运行线程1 2s过后,再回到线程2。
【内容声明】本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等均在网上搜集。本文提供的内容或服务仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,本网站不承担任何法律责任。如涉及版权问题,请及时通知本网站删除。
BSMD1812-200-30V/自恢复保险丝 | 0.38069 | |
FS55X106K101EGG/贴片电容(MLCC) | 1.28 | |
CA45-A016K106T/钽电容 | 0.224 | |
LKS665B/仿真器/烧录器 | 429.55 | |
FS32X225K101EGG/贴片电容(MLCC) | 0.229602 | |
FE2HX475M251LGL/贴片电容(MLCC) | 7.07 | |
DMS3R3224RS/超级电容器 | 1.57 | |
SM3R3703T01U/超级电容器 | 0.952 | |
FS32X106K101EGG/贴片电容(MLCC) | 1.42 | |
CA45-A010K106T/钽电容 | 0.2016 |
50万+现货SKU
品类不断扩充中
科技智能大仓储
最快4小时发货
正品有保障
物料可追溯
明码标价节省时间
一站式采购元器件