Qt のスレッドサポート

Qt では、プラットフォームに依存しないスレッドクラス、スレッドセーフなイベント投稿方法、スレッド間のシグナルスロット接続という形でスレッドサポートを提供しています。これにより、移植性の高いマルチスレッド Qt アプリケーションを簡単に開発し、マルチプロセッサ・マシンを活用することができます。また、マルチスレッドプログラミングは、アプリケーションのユーザーインターフェイスをフリーズさせることなく、時間のかかる操作を実行するのに便利なパラダイムです。

Qtの以前のバージョンでは、スレッドサポートなしでライブラリをビルドするオプションがありました。Qt 4.0 以降、スレッドは常に有効になっています。

トピック

これらの記事は、読者がマルチスレッドアプリケーションに関する基本的な知識を持っていることを前提としています。

スレッドクラス

これらのクラスはスレッドアプリケーションに関連します。

Concurrent Filter and Filter-Reduce

シーケンスから値を選択し、それらをすべて並列に組み合わせる

Concurrent Map and Map-Reduce

シーケンスから値を変換し、それらをすべて並列に組み合わせる

Concurrent Run

タスクを別のスレッドで実行する簡単な方法

Concurrent Task

別スレッドでタスクを実行する設定可能な方法

QAtomicInteger

整数に対するプラットフォーム非依存のアトミック演算

QAtomicPointer

ポインタに対するプラットフォームに依存しないアトミック操作を提供するテンプレートクラス

QFuture

非同期計算の結果を表す

QFutureSynchronizer

QFuture の同期を簡素化する便利なクラス

QFutureWatcher

シグナルとスロットを使ったQFutureの監視を可能にする

QMutex

スレッド間のアクセス・シリアライズ

QMutexLocker

ミューテックスのロックとアンロックを簡素化する便利なクラス

QPromise

QFuture がアクセスする計算結果を保存する方法

QReadLocker

読み取りアクセスのための読み書きロックのロックとロック解除を簡素化する便利なクラス

QReadWriteLock

読み書きロック

QRecursiveMutex

スレッド間のアクセス・シリアライズ

QRunnable

すべての実行可能オブジェクトの基本クラス

QSemaphore

一般的なカウント・セマフォ

QSemaphoreReleaser

QSemaphore::release() 呼び出しの例外安全な延期

QThread

プラットフォームに依存しないスレッド管理方法

QThreadPool

QThreads のコレクションを管理する

QThreadStorage

スレッドごとのデータ格納

QWaitCondition

スレッドを同期させるための条件変数

QWriteLocker

書き込みアクセスのための読み書きロックのロックと解除を簡素化する便利なクラス

QtConcurrent

低レベルのスレッドプリミティブを使用せずにマルチスレッドプログラムを書くことを可能にする高レベルAPI

QtConcurrent::QTaskBuilder

タスクパラメータの調整に使用

QtFuture::WhenAnyResult

QtFuture::WhenAnyResult は QtFuture::whenAny() の結果を表すために使用されます。

QAtomicInteger::qYieldCpu()

注意: Qt のスレッドクラスは、Win32 や pthreads などのネイティブのスレッド API を使って実装されています。そのため、同じネイティブ API のスレッドで使用することができます。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。