問題タブ [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 に答える
547 参照

multithreading - POSIX スレッドを理解する

POSIX スレッドについて混乱しています。Pthreads についての私の理解が適切かどうかを知りたいのですが、

私によると、マルチスレッドの処理に役立つネイティブ層の上の層です。これは、ある OS から別の OS への移植に役立つ共通の構文を提供します。さまざまな OS 固有の構造を内部的に処理します。

間違っている場合はお知らせください。見逃した点を追加してください。

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

c - pthread_cond_wait と pthread_cond_signal で譲歩を保証

グローバル変数、ミューテックス、条件変数を共有する 3 つの POSIX スレッドを持つ C プログラムがあり、そのうちの 2 つが次の疑似コードを実行しているとします。

そして3回目の実行:

3 番目のスレッドが最初の 2 つのスレッドのそれぞれからのデータを見ると仮定しても安全でしょうか?

別の言い方をすれば、スレッドがミューテックスと条件変数を待機している場合、ロックを待機している可能性のある他のスレッドではなく、シグナルが送信された場合にロックを取得する次のスレッドであると想定しても安全ですか?ロック?

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

linux - Linux で 1 つのスレッドの UID/GID のみを変更する

マルチスレッド プロセスで 1 つのスレッドのみの UID/GID を変更する方法はありますか?

この理由は、ファイル サービス アプリケーションを作成するためです。呼び出し元の uid/gid が正しいユーザーに設定されていない限り、ACL とクォータは適用されず、新しいファイル/ディレクトリは正しい uid/gid で作成されません。

通常、ネットワーク アプリケーションは最初に自分自身を fork() し、各ユーザー リクエストを個別のプロセスで処理します。共有データが必要な場合は、何らかの共有メモリを経由する必要があります。ただし、たとえば、FUSE (Linux ユーザー ファイルシステム) はデフォルトでマルチスレッドを使用し、Python バインディングと組み合わせてフォーク モデルを使用するのは現実的ではありません。

プロセス全体の「一貫した」UID は POSIX 標準に従っているようですが、古い Linux は POSIX に従っておらず、スレッドごとに異なる uid を許可していました。新しいカーネルは POSIX に従っているようですが、古い「壊れた」動作を許可する方法はありますか?

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

c++ - pthread_key_t と pthread_once_t?

pthreads から始めて、pthread_key_t と pthread_once_t のビジネスが何であるか理解できませんか?

可能であれば、誰かが例を使って簡単に説明してくれませんか?

ありがとう

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

c - ミューテックス競合を測定する方法は?

Linux で PThreads を使用するスレッド化されたコードがいくつかありますが、これは過度のロック競合に苦しんでいると思われます。これを測定するために利用できるツールは何ですか?

Solaris には DTrace と plockstat があります。Linuxに似たようなものはありますか?(Linux 用の最近の DTrace 移植については知っていますが、まだ準備が整っていないようです。)

0 投票する
9 に答える
31341 参照

c++ - pthread ミューテックスのオーバーヘッド?

C++ API (Linux および Solaris 用) をスレッドセーフにしようとしています。これにより、内部データ構造を壊すことなく、その関数を異なるスレッドから呼び出すことができます。私の現在のアプローチでは、メンバー変数へのすべてのアクセスを保護するために pthread ミューテックスを使用しています。これは、単純なゲッター関数がミューテックスをロックおよびロック解除することを意味します。この API は主に、ミューテックス ロックが純粋なオーバーヘッドのように見えるシングル スレッド アプリで使用されるため、特にこのオーバーヘッドが心配です。

だから、私は尋ねたい:

  • ロックを使用するシングル スレッド アプリとロックを使用しないアプリのパフォーマンスを比較した経験はありますか?
  • これらのロック/ロック解除呼び出しは、たとえばと比較してどれくらい高価ですか。boolメンバー変数への単純な「return this->isActive」アクセス?
  • そのような変数アクセスを保護するより良い方法を知っていますか?
0 投票する
3 に答える
343 参照

c++ - スレッドなしのコマンド キューイング

各オブジェクトが独立して相互作用するクラスがあるとしましょう。たとえば、オフサイトの多くのサーバーでデータベースからさまざまなテーブルを作成する場合があります。ただし、内部的には、いくつかのテーブルがリンクされていることをたまたま知っており、応答を必要としないコマンドをグループ化することで、大量の IO を節約できます。私の目標は、テーブルのインターフェイスをそのまま使用してコードを記述できるようにすることです。

このコードでは、実際には 2 つのコマンドのみをデータベースに送信する必要があります。最初に a.add() を呼び出した後、500ms 後にデータベースにコマンドを発行する一種の「キュー」を開始します。b.add() が呼び出されたときに、この新しい命令をこのキューに投入したいと考えています。ただし、スリープが発生する (そして、命令が送信されるのに十分な時間が経過する) ため、c.send() が実際に新しいキューを開始し、500 ミリ秒以内に再び送信されるようにしたいと考えています。

ただし、秘訣は、可能であればスレッドなしでこれを実行したいということです。それは可能ですか(私はそうは思わない傾向があります)?そうでない場合、C++ のどのツールがその仕事に適していますか?また、そのスレッドがスリープしている間に読み取られる前に編集されるオブジェクトと通信するにはどうすればよいでしょうか?

(実際には、これはデータベースとは何の関係もないので、これが役に立たないという事実について心配する必要はありません)

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

posix - 現実的に、どの pthreads 機能が一般的に使用されていますか?

私は自分のオペレーティング システム プロジェクトの POSIX サブシステムに取り組んでおり、pthreads サポートに取り組みたいところまで来ました。ただし、それらをどの程度実装する必要があるかについては確信が持てません。

最も使用されている pthreads 機能は何ですか? 今のところ安全に「スタブアウト」して、それを必要とするアプリケーションを移植するときに実装できるものはありますか? これまでの私の調査では、基本的なスレッド操作 (作成、結合など) (これは明らかです) とミューテックスのサポートを示しています。現実的に言えば、アプリケーションはこれよりも多くを使用するのでしょうか?

実装が機能している間に、どれだけのことを回避できるかを理解しようとしているだけだと思います。

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

c++ - C、C++、C++0x、pthread、boost のスレッド

C/C++ のスレッドに関する質問...

C++0x 構文

スレッドはいくつありますか? 2 つ (x と y) または 3 つ (x、y とメイン)? this_thread::yield()メインで呼んでもいいですか?this_thread::get_id()そして、メインで呼び出すと何が得られますか?

pthread 構文

スレッドはいくつありますか? 2 つ (x と y) または 3 つ (x、y とメイン)? pthread_yield()メインで呼んでもいいですか?pthread_self()そして、メインで呼び出すと何が得られますか?

ブースト構文

スレッドはいくつありますか? 2 つ (x と y) または 3 つ (x、y とメイン)? boost::this_thread::yield()メインで呼んでもいいですか?boost::this_thread::get_id()そして、メインで呼び出すと何が得られますか?

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

multithreading - 一般的な再入可能ロックと概念とは何ですか?

私はいつも混乱します。Reentrantがさまざまなコンテキストで何を意味するのか、誰か説明してくれませんか? そして、なぜ再入可能と非再入可能を使いたいのでしょうか?

pthread (posix) ロック プリミティブと言うと、それらは再入可能かどうか? それらを使用するときに避けるべき落とし穴は何ですか?

ミューテックスは再入可能ですか?