問題タブ [pthreads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
37087 参照

c - ノンブロッキング pthread_join

マルチスレッド サーバーのシャットダウンをコーディングしています。すべてがうまくいけば、すべてのスレッドが独自に終了しますが、スレッドがスタックする可能性がわずかにあります。この場合、非ブロック結合があると便利です。だから私はすることができました。

ノンブロッキングの pthread_join を行う方法はありますか? ある種の時限参加も良いでしょう。

このようなもの:

ノンブロッキング結合が役立つケースは他にもあると思います。

そのような関数はないように思われるので、既に回避策をコーディングしましたが、私が望むほど単純ではありません。

0 投票する
6 に答える
7358 参照

c++ - マルチスレッドデバッガ

複数のスレッド (pthread) を使用してデバッグする場合、GDB には深刻な問題があります。*nix 上の C/C++ 用の優れたマルチスレッド デバッガは他にありますか?

0 投票する
13 に答える
18941 参照

c - C/Pthreads の使用: 共有変数は揮発性である必要がありますか?

C プログラミング言語と、スレッド化ライブラリとしての Pthreads。スレッド間で共有される変数/構造体は揮発性として宣言する必要がありますか? それらがロックによって保護されているかどうか(おそらくバリア)であると仮定します。

pthread POSIX標準はこれについて発言権を持っていますか、これはコンパイラに依存していますか、それともどちらでもありませんか?

編集して追加: 素晴らしい回答をありがとう。しかし、ロックを使用していない場合はどうでしょう。たとえば、バリアを使用している場合はどうなりますか? または、コンペアアンドスワップなどのプリミティブを使用して共有変数を直接かつアトミックに変更するコード...

0 投票する
5 に答える
19740 参照

c++ - C++ クラスのメンバーとしてスレッドを開始する最良の方法は?

C++ クラスのメンバーである pthread を開始する最良の方法を知りたいですか? 私自身のアプローチは答えとして続きます...

0 投票する
5 に答える
14793 参照

c++ - GDB バックトレース メッセージ "0x0000000000000000 in ?? ()" はどういう意味ですか?

次の出力でバックトレースを提供する場合、それはどういう意味ですか?

プログラムは、標準シグナル 11、セグメンテーション違反でクラッシュしました。私のアプリケーションは、スレッド ライブラリとして pthread を使用して、FreeBSD 6.3 で実行されるマルチスレッド FastCGI C++ プログラムです。

情報ソースによると、これは -g でコンパイルされており、ソースのすべてのシンボル テーブルが読み込まれています。

明らかなように、実際のコードはトレースに表示されませんが、代わりにエラーは標準の pthread ライブラリから発生しているようです。特に、??とは? ()????

EDIT : 最終的に、メイン コードの標準の無効なメモリ アクセスまでクラッシュを追跡しました。スタック トレースが破損した理由は説明しませんが、それは別の日の質問です :)

0 投票する
3 に答える
2261 参照

c - pthread が機能しない理由は何ですか?

現在、バックグラウンド スレッド (PTHREAD_DETACHED) を作成してから pthread_exit(0) を呼び出すマルチスレッド プログラム (pthreads を使用) を使用しています。私の問題は、プロセスが「無効」としてリストされ、不思議なことに /proc に「実際に存在する」ように見えないことです(これは私のデバッグ戦略を無効にします)

以下の要件を満たすことを希望します。

  • プログラムは関数 A をループで実行し、関数 B を 1 回実行する必要があります
  • プログラムの PID /proc/$pid/exe、/proc/$pid/maps、および /proc/$pid/fd にアクセスできる必要があります (プロセスが機能していない場合、それらはすべて空または無効なリンクです)。
  • 通常どおり CTRL+C と CTRL+Z でプログラムを一時停止/中断できる必要があります

編集:「メイン」スレッドにAを、生成されたスレッドにBを配置するためにプログラムのインターフェースを変更することをためらっています(現在、それらは逆になっています)。それは問題を解決しますか?

0 投票する
2 に答える
1773 参照

c - pthread_detach は私のメモリを管理してくれますか?

次のコードがあるとします。

デタッチされたスレッドは、malloc によって割り当てられたメモリを解放しますか、それとも今やらなければならないことですか?

0 投票する
3 に答える
1243 参照

c# - pthread_cond_t の EventWaitHandle の動作

私は最近、C# での EventWaitHandle の強力な動作の光を見て、同じことを行うために姉妹アプリケーションの一部の機能を移動することにしました。唯一の問題は、姉妹アプリが C で記述されていることです。

大したことではありません。シグナルを許可する pthread_cond_t データ型を持つ pthreads を使用しています。私の唯一の質問は、何かが待っている前に条件を「通知」することは可能ですか?

現在、私のテストではノーと言われています。つまり、ThreadB が待機する前に ThreadA がシグナルを起動すると、ThreadB は無期限に待機します。C# の EventWaitHandle の機能により近い動作をする、使用できる別の pthread タイプはありますか? オブジェクトはシグナル状態です。これは、オブジェクトを待機する最初のスレッドがすぐに渡され、シグナルなしに設定されることを意味します。

pthread_cond を別のデータ構造にラップすることは、これを達成するのにそれほど難しくありません。繰り返しになりますが、この機能は pthread ライブラリで既に利用可能ですか?

0 投票する
7 に答える
13757 参照

c++ - x64用の静的pthread-win32libをどのようにコンパイルしますか?

pthread-win32をx64で動作させるためにいくつかの作業が行われたようですが、ビルド手順はありません。Visual Studio x64 Cross Toolsコマンドプロンプトを使用して単純にビルドしようとしましたが、x64アプリケーションからlibにリンクしようとすると、関数のエクスポートが表示されません。まだライブラリをx86か何かとしてコンパイルしているようです。

/ MACHINEをmakefileの適切な場所に追加しようとしましたが、役に立ちません。誰かがこれを機能させましたか?

0 投票する
20 に答える
5057 参照

multithreading - どの並列プログラミング API を使用していますか?

最近のマルチコアおよびマルチプロセッシング ハードウェアの非常に重要性を考慮して、人々が実際に並列コードをどのように書いているかを把握しようとしています。私には、支配的なパラダイムは pthreads (POSIX スレッド) のように見えます。これは Linux でネイティブで、Windows で利用できます。HPC の人々は OpenMP や MPI を使用する傾向がありますが、ここ StackOverflow にはあまりないようです。それとも、移植可能な標準ではなく、Java スレッド化、Windows スレッド化 API などに依存していますか? あなたの意見では、並列プログラミングを行うための推奨される方法は何ですか?

それとも、Erlang、CUDA、RapidMind、CodePlay、Oz、または親愛なる古い Occam などのよりエキゾチックなものを使用していますか?

明確化: Linux、さまざまな UNIX、さまざまなホスト アーキテクチャなどのプラットフォームに移植可能で適用可能なソリューションを探しています。Windows は、サポートしてよかった稀なケースです。したがって、C# と .net はここでは狭すぎます。CLR はクールなテクノロジですが、Linux ホスト用にリリースして、JVM、Python、Erlang、またはその他の移植可能な言語と同じくらい普及するようにしてください。

C++ または JVM ベース: JVM はパフォーマンスを隠す傾向があるため、おそらく C++ です。

MPI: HPC 関係者でさえ、これを使いにくいツールと見なしていることには同意しますが、128000 プロセッサで実行する場合、map/reduce が適用されない問題に対する唯一のスケーラブルなソリューションです。ただし、メッセージ パッシングは、ローカル メモリ/AMP、共有メモリ/SMP、分散ランタイム環境に適切に拡張できる唯一のプログラミング スタイルであるため、非常に洗練されています。

興味深い新しい候補はMCAPIです。しかし、それを実際に経験する時間があった人はまだいないと思います。

全体として、私が知らなかった多くの興味深い Microsoft プロジェクトがあり、Windows API または pthreads が実際に最も一般的な実装であるという状況のようです。