当一个简单的线程运行时只有一个无限循环导致 100% 的 CPU,这怎么可能?
我的线程调用如下在 Qt 对话框类中的 QEvent 上,单击按钮时说。
pthread_t thread_id;
pthread_create( &thread_id, NULL, DataCollectionThread, (void*) this );
我的线程程序是,
void* DataCollectionThread( void* pParam )
{
((m_DataCollection*)pParam)->m_ReadDatafromport();
return NULL;
}
而这ReadData()
包含...
while(1)
{
}
我的要求是从串口收集数据并连续绘制图表。但是由于 CPU 使用率为 100%,因此绘图之间的任何硬件中断都会导致绘图停止,因为CPU
切换任务以处理中断。
我在一个Qt::Dialog
基础类中调用这个线程。我很确定除此之外没有其他任何东西被触发。这有什么问题?一个简单的无限循环会导致 100% 的 CPU 消耗吗?或者在 Qt 中使用 pthread_create 有什么问题吗?
编辑:乔纳森·莱因哈特
这是实际的while循环
while( 1 )
{
while(( Dataisavailable))
{
//push the read data to stack
}
if(!m_DataReadable)
break;
}