[解決済み] mingw-w64スレッド:PosixとWin32の比較
質問
Windowsにmingw-w64をインストールしているのですが、win32 threadsとposix threadsという2つのオプションがあります。win32スレッドとpthreadsの違いは分かっているのですが、この2つのオプションの違いがよく分かりません。posix threadsを選択すると、CreateThreadのようなWinAPI関数を呼び出せなくなるのではと思うのですが。
このオプションは、あるプログラムやライブラリがどのスレッドAPIを使用するかを指定するようですが、どのようなものなのでしょうか?GCC、libstdc++、あるいは他の何かによって?
こんなのがありました。 Windowsのgcc移植におけるthread_posixsとthread_win32の違いは何ですか?
<ブロッククオート要するに、今回のバージョンの mingw では、threads-posix リリースは posix API を使用し、std::thread の使用を許可し、threads-win32 は win32 API を使用し、標準の std::thread の部分を無効化する、ということです。
OK、もし私がwin32スレッドを選択するならば、std::threadは使用できなくなりますが、win32スレッドはまだ使用されます。しかし、何によって使用されるのでしょうか?
どうすればいいですか?
GCCにはコンパイラ・ランタイム・ライブラリ(libgcc)が付属しており、(特に)サポートする言語におけるマルチスレッド関連機能のための低レベルOS抽象化を提供するために使用されています。最も関連した例は、libstdc++のC++11です。
<thread>
,
<mutex>
および
<future>
これは、GCC がその内部 Win32 スレッドモデルでビルドされる場合、完全な実装を持ちません。MinGW-w64はwinpthreads(Win32マルチスレッドAPIの上のpthreads実装)を提供し、GCCはそれをリンクして、すべての派手な機能を有効にすることができます。
このオプションは、あなたが好きなコードを書くことを禁じているわけではないことを強調しておかなければなりません。 NO は、あなたのコードで呼び出せるAPIに影響を与えます)。それは、GCCのランタイムライブラリ(libgcc/libstdc++/...)がその機能のために使うものを反映するだけです。Jamesが引用した注意事項は、GCCの内部スレッドモデルとは関係なく、むしろ、MicrosoftのCRT実装に関係するものです。
要約すると
-
posix
C++11/C11 のマルチスレッド機能を有効にします。libgcc を libwinpthreads に依存させ、pthreads API を直接呼び出さなくても、 winpthreads DLL を配布するようにしました。アプリケーションと一緒にもう一つDLLを配布することは何も問題ありません。 -
win32
: C++11のマルチスレッド機能はありません。
Win32 API や pthreads API を呼び出すユーザーコードには、どちらも影響を与えません。あなたは常に両方を使用することができます。
関連
-
[解決済み】cmdでdirを呼び出すと出力される。"Cドライブのボリュームにはラベルがありません。"
-
[解決済み] Npm このコマンドを root/administrator で再使用してください。
-
[解決済み] .dllファイルに「このプログラムはDOSモードでは実行できません」というテキストがあるのはなぜですか?
-
[解決済み] WindowsのLD_LIBRARY_PATHをシミュレートする方法はありますか?
-
[解決済み] xcopyコマンド使用時に "invalid path 0 files copied "というエラーが発生する。
-
[解決済み] コマンドプロンプト「Net View System Error 6118」[終了しました]。
-
[解決済み] git cloneです。<URL> の認証に失敗しました。
-
[解決済み] なぜGCCはa*a*a*a*aを(a*a*a)*(a*a*a)に最適化しないのでしょうか?
-
[解決済み] g++とgccの違いは何ですか?
-
[解決済み] CygwinとMinGWの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] wampでApacheが起動しない
-
[解決済み] 0|%0とは何ですか、どのように機能しますか?
-
[解決済み] OpenSSL が設定ファイルの distinguished_name を見つけられませんでした。
-
[解決済み] WindowsのLD_LIBRARY_PATHをシミュレートする方法はありますか?
-
[解決済み] 'ant' は内部コマンドまたは外部コマンドとして認識されません。
-
[解決済み] XAMPP Object not foundエラー
-
[解決済み] PowerShellでTAB文字を入力するには?
-
[解決済み] Windowsでgl3wを設定するには?
-
[解決済み] Windowsからリモートサーバーへscpでローカルファイルをコピーする [終了しました]。
-
[解決済み] 管理者として実行せずにネットワークドライブにマップするためのBATファイル