QT アプリケーションにタイムアウトを実装しようとしています。QThread を使用して操作 (タイムアウトが必要なタスク) を実行し、QElapsedTimer を使用して操作の実行を待機している経過時間をカウントしました。以下はコードスニペットです
QElapsedTimer timeoutTimer; // Timer to count the elapsed time waiting for the operation to complete.
long timeoutInterval=10000
MyThread mThread(); // QThread implementation
timeoutTimer.start();
mThread.start();
while((timeoutTimer.elapsed() < timeoutInterval) && mThread.isRunning()){
sleep(5);
}
if(mThread.isRunning()){
mThread.terminate();
}
ここで、タスクが完了せずにタイムアウトが発生すると、「スレッドの実行中に破棄されました」というメッセージが表示され、アプリケーションがクラッシュします。QThread の terminate() 関数を呼び出そうとしましたが、Windows では動作していますが、Linux ではセグメンテーション エラーが発生します。