私はたくさんのメソッドを持つエンコーダークラスを持っています。これは Qthread のサブクラスです。私はマルチスレッドが初めてで、
このクラスがどのようにメソッドをスレッド化しているかを理解しようとしています
... qthread のサブクラスになければならないメソッドをスレッド化することを理解しています。これを実行すると、このクラスのスレッド化されたコードが実装されます。そして、スレッドは、このクラスのオブジェクトで start メソッドが呼び出されたときにのみ開始されます。
質問: まず、この実行の実装から何を推測しますか?
void Encoder::run(void)
{
VERBOSE(VB_DEBUG, "Encoder::run");
if (WILL_PRINT(VB_DEBUG))
print_stats_timer_id = QObject::startTimer(kEncoderDebugInterval);
health_check_timer_id = QObject::startTimer(kEncoderHealthCheckInterval);
if (init())
exec();
else
VERBOSE(VB_ERROR, "Encoder::run -- failed to initialize encoder");
QObject::killTimer(health_check_timer_id);
if (print_stats_timer_id)
QObject::killTimer(print_stats_timer_id);
cleanup();
}
質問:スレッド コンテキストとは、そのメソッドに関連して何を意味しますか。
また
質問:このクラスのスレッドが開始される前に、このクラスのメソッドが呼び出された場合はどうなりますか?