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
ただし、CPU 使用率が 100% であるため、プロットの間にハードウェア割り込みが発生すると、タスクが割り込みを処理するように切り替わるため、プロットが停止します。
Qt::Dialog
このスレッドをベース クラスで呼び出しています。これ以外にトリガーされるものは何もないと確信しています。これの何が問題なのですか?単純な無限ループで 100% の CPU 消費が発生しますか? または、Qt で pthread_create を使用する際に問題はありますか?
編集:ジョナソン・ラインハートの場合
これは実際のwhileループです
while( 1 )
{
while(( Dataisavailable))
{
//push the read data to stack
}
if(!m_DataReadable)
break;
}