問題タブ [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 投票する
2 に答える
8429 参照

multithreading - pthread での gprof の使用

pthreads を使用するマルチスレッド プログラムのプロファイリングに gprof を使用できますか? つまり、その出力には、すべてのスレッドで使用された時間が含まれますか?

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

c++ - イベント/タスク キュー マルチスレッド C++

複数のスレッドからメソッドを呼び出せるクラスを作成したいと考えています。ただし、メソッドが呼び出されたスレッドでメソッドを実行するのではなく、独自のスレッドですべてを実行する必要があります。結果を返す必要はなく、呼び出し元のスレッドをブロックするべきではありません。

私が以下に含めた最初の試みの実装。パブリック メソッドは、関数ポインターとデータをジョブ キューに挿入し、ワーカー スレッドがそれを取得します。ただし、これは特に優れたコードではなく、新しいメソッドを追加するのは面倒です。

理想的には、これを基本クラスとして使用して、手間とコードの重複を最小限に抑えて (可変数の引数を使用して) メソッドを簡単に追加できるようにしたいと考えています。

これを行うためのより良い方法は何ですか? 同様のことを行う既存のコードはありますか? ありがとう

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

multithreading - 並列化:pthreadまたはOpenMP?

科学計算のほとんどの人は、共有メモリの並列化に関して、準標準としてOpenMPを使用しています。

pthread上でOpenMPを使用する理由(読みやすさ以外)はありますか?後者はより基本的なようであり、最適化する方が速くて簡単かもしれないと思います。

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

c++ - pthreads はコンパイルしますが、バイナリは作成されません

pthreads を使用する代入のために C++ で作成したプログラムをコンパイルしようとしています。Linux で Eclipse を使用していますが、コンパイラの引数 (g++、gcc、リンカー) に「-lpthread」を追加した後、コンパイルに問題はありませんでした。しかし、実行してデバッグしようとすると、Eclipse から「起動に失敗しました。バイナリが見つかりません」というエラー メッセージ ウィンドウが表示されました。

gcc と g++ を使用して、サフィックス -pthread と -lpthread を付けて手動でコンパイルしようとしましたが、「gcc: –pthread: No such file or directory」という結果になりました。

問題なくコンパイルされ、exeが生成されないため、何が問題なのかわかりません。何かを適切に取得する必要があるかもしれないと思います。

私がすべきことはありますか?

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

c - Pthread-time.h :: sleep()とpthread.h :: pthread_yield()の違いは何ですか?

time.h :: sleep()とpthread.h :: pthread_yield()の違いに関する情報を探すのにかなり長い時間を費やしましたが、確かな参考資料が見つからなかったため、この質問を投稿しています。

time.h :: sleep()とpthread.h :: pthread_yield()の違いは何ですか?

アップデート:

私が尋ねる理由は、私がsleep()を使用して個々のスレッドをsleep()していたためです...そして、8つのスレッドと4つのスレッドがあるときに、アプリケーションで問題が発生し始めました。オンラインでsleep()が各スレッドにのみ影響するかどうかを確認したところ、Sleep()がプロセス全体に影響するのか、sleep()が個々のスレッドにのみ影響するのかを示す適切なリファレンスが見つかりませんでした。

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

c++ - pthread_mutex_lockのセグメンテーション違反

やろうとするとセグメンテーション違反が発生します

これは本当に奇妙なことです。何が原因なのかわかりません。コンストラクターで_mutexを初期化しました

私にできることは何ですか?

0 投票する
1 に答える
2176 参照

c++ - pthread_setspecificおよびpthread_getspecificを使用して、std::mapインスタンスへのポインターを格納します

失敗したLDAP検索を追跡するために、スレッド固有のキャッシュとしてマップを使用しています。マップを動的に割り当て、pthread_setspecificを使用してポインターを格納します。キャッシュをチェックしたり、失敗数を増やしたりするときは、pthred_getspecificを使用して、void *ポインターを取得し、ポインターをマップタイプにstatic_castします。[]演算子を使用したマップの呼び出しは、マップの状態に影響を与えないようであり、map-> size()の呼び出しは常に0を返します。おそらくpthread_getspecificを誤って使用しているように感じますが、私が行った例から私のコードを見て、正しく見えます。

コード:


テストコード:


テストコード出力:

0 投票する
1 に答える
181 参照

synchronization - スレッド同期用のロックの選択についてヘルプが必要

いくつかの変更スレッドといくつかの読み取りスレッドがあり、それらはすべてグローバル変数 X にアクセスします。同期ポリシーを次のように作成したいと考えています。

スレッドが X を変更しようとすると、最初にロックが必要になり、いくつかの変更スレッドには複数のロックが必要になる場合があります。

スレッドが X を読み取ろうとすると、すべての変更スレッドがロックを解除するまで待機する必要があります。

Linux pthread ライブラリでこの状況に対する解決策はありますか? どうもありがとう

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

c - C プログラミング: pthread を使用したデバッグ

私が最初に順応するのが最も難しかったことの 1 つは、C で pthreads を使ったプログラミングを初めて経験したときでした。私は、実行されるコードの次の行が何であるかを正確に知ることに慣れており、私のデバッグ手法のほとんどは、その期待に基づいていました。

C で pthreads を使用してデバッグするための優れた手法は何ですか? 追加のツール、使用するツール、またはデバッグに役立つその他のものを使用せずに、個人的な方法論を提案できます。

PS Linuxでgccを使用してCプログラミングを行っていますが、必ずしも答えを制限しないでください

0 投票する
4 に答える
366 参照

c - データベースのトランザクションとスレッド

関数 lock()、unlock()、query1()、query2()、および query3() があります。クエリ関数は、データベースに対して何らかのクエリを実行するだけで、データベースへの r/w アクセスと見なすことができます。ロックしません。私のシステムはマルチスレッドです。

必要な機能は次のとおりです。スレッド p1 から lock() が呼び出された場合、スレッド p1 からのクエリのみが実行され、他のすべてのスレッドからのクエリはロック解除を待ちます。どうすればいいですか?

私は C の pthreads を使用しています。これを行うには、スレッドがロックを保持していることを認識している必要があります。しかし、pthreads にはそのような機能はありません。

設計がおかしい??

編集:

lock() で必要な動作は、スレッドが既にそのロックを保持している場合、ロックを待機しないことです。実行するだけです。問題は、私の lock() 関数が実際にトランザクションを開始することです。トランザクションでたくさんのものを実行したい。そして unlock() はトランザクションを終了します。クエリを連鎖できるようにしたい。1 つの回避策は、doQuery3() の代わりに Function1() で query3() を呼び出すことです。つまり、すべての関数に 2 つのバージョンがあり、1 つはロック付きで、もう 1 つはバニラ query() です。

繰り返しますが、これらのロックおよびロック解除機能は、mutex ロックである場合とそうでない場合があります。pthreadミューテックスで実装しようとしましたが、できませんでした。同じスレッドの pthread_mutex_lock がブロックするためです。クールなトリックはありますか??