このページでは

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

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

QThreadStorage

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

QWaitCondition

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

QWriteLocker

書き込みアクセス用の読み書きロックのロックおよびロック解除を簡略化する便利クラス

QtConcurrent

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

QtConcurrent::QTaskBuilder

タスクのパラメータを調整するために使用されます

QtFuture::WhenAnyResult

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

QAtomicInteger::qYieldCpu()

注:Qtのスレッド関連クラスは 、Win32やpthreadsなどのネイティブスレッドAPIを用いて実装されています。したがって、これらは同じネイティブAPIを使用するスレッドで利用可能です。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.