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

c++ - シンプルなスレッド!C++

これが機能しない理由がわかりません

エラー:

[説明、リソース、パス、場所、タイプ] 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)' の引数 3 を初期化します threading.cpp threading/src 24 行目 C/ C++ の問題

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

c - cの処理ユニット(#cpu、cores)のnrを取得するポータブルな方法?

システム内のCPUやコアなどの処理ユニットの数を取得する方法はありますか?pthreadを使用してアプリを作成するので、posix呼び出しがあればそれは素晴らしいことです。/ proc / cpuinfoから読み取ることについては知っていますが、それはそれほど移植性がありません。別のよりポータブルな方法はありますか?

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

c - pthread待機条件の周りにwhileループが必要なのはなぜですか?

私はpthreadと待機条件を学んでいます。私が知る限り、典型的な待機スレッドは次のようになります。

私が理解できないのは、スレッドをウェイクアップするためwhile(!condition)に使用しても、なぜラインが必要なのかということです。pthread_cond_signal()

pthread_cond_broadcast()使用する場合、条件をテストする必要があることを理解できます。これは、待機中のすべてのスレッドをウェイクアップし、そのうちの1つが、ミューテックスのロックを解除する前に条件を再度falseにする可能性があるためです(したがって、その時点で実行されるべきではない別のウェイクアップされたスレッドに実行を転送します点)。しかし、私が使用する場合、私は1つのpthread_cond_signal()スレッドだけをウェイクアップするので、条件は真でなければなりません。したがって、コードは次のようになります。

発生する可能性のあるスプリアス信号について何かを読みました。これ(そしてこれだけ)が理由ですか?なぜ私は偽の歌を持っている必要がありますか?それとも私が得られない何かがありますか?

信号コードは次のようになっていると思います。

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

c - セマフォ操作を待機しているスレッドを終了するにはどうすればよいですか

ipc に共有メモリとセマフォを使用するプログラムを作成しています。共有メモリとセマフォを作成するメイン サーバー プロセスが 1 つあります。クライアント プロセスはいくつでも共有メモリにアタッチでき、許可されている場合は読み書きできます。セマフォは、読み取りと書き込みを制御するブロッキング メカニズムを提供します。クライアントを終了しようとする場合を除いて、すべて正常に動作します。共有メモリにアクセスするためのセマフォ ブロックはスレッド内にあり、プロセスの終了時にセマフォ ブロックを解放する方法がないため、スレッドは正しく終了します。これについてどうすればいいですか?これは Linux 用です。

具体的には、1 つの shm と 2 つの sem があります。最初の sem は書き込みをブロックし、2 番目のブロックは読み取りをブロックします。クライアントが何かを書き込む場合、クライアントは write sem が 0 になるのを待ってから、それを 1 に設定し、書き込み、次に read sem を 0 に設定します。これにより、待機しているサーバーが解放され、クライアントが書き込んだ内容が読み取られます。読み取りが完了すると、サーバーは書き込み sem を 0 に戻し、次のクライアントが書き込みを開始します。read sem が 0 のときに解放される semop 呼び出しでハングします。この semop 呼び出しはスレッド内にあり、メイン スレッドを終了させる前にそのスレッドを正しく終了する方法を理解する必要があります。

これは私がやりたいことの例ですが、機能していません (スリープはぶら下がっている semop 呼び出しのふりをしています):

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

c++ - クラスからのpthread関数

私が次のようなクラスを持っているとしましょう

そして、私はcのベクトルを持っています

今、私はスレッドを作成したいc.print();

そして、以下は私に以下の問題を与えています:pthread_create(&t1, NULL, &c[0].print, NULL);

エラー出力:引数「3」の「void *(tree_item :: )(void)」を「void *()(void )」に変換できません」int pthread_create(pthread_t *、const pthread_attr_t *、void *( )(void)、void *)'</ p>

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

pthreads - WatiForMultipleObjects に相当する pthread はありますか

2 つのスレッドを生成し、両方が完了するまで待機する次の Windows コードがあります。

私は現在、pthreads を使用するために同じコードを移植していますが、同等のことを行う方法がわかりませんWaitForMultipleObjects:

同じ機能を実現するために、pthreads を使用する同等の方法はありますか?

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

c - スレッドプールとは何ですか?

Thread-pool (pthreads の助けを借りて C で) を実装する概念は何ですか? スレッドプールから実行するようにスレッドを割り当てるにはどうすればよいですか?

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

iphone - iPhone:マルチタスク、マルチスレッド?

iPhoneはマルチタスクとマルチスレッドをサポートしていないと言われました。これは私には意味がなかったので、シミュレーターでテストしました。pthreadsは機能しますが、fork()は機能しません。この結果私には理にかなっていますが、今はわかりません。pthreadライブラリは実際のデバイスでも機能しますか?

ありがとう。

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

c++ - pthread_exit が C++ ソースではなく C ソースから呼び出された場合、キャンセル ハンドラが実行されない

C++ ソースを C ソースおよび C++ ソースとリンクしています。キャンセル ポイントである pthread を使用してスレッドを作成し、C または C++ ソース ファイルを介して pthread_exit を呼び出します。

pthread_exit 呼び出しが C ソースからのものである場合、キャンセル ハンドラは起動しません。この理由は何ですか?

b.cc:

vpp.cc:

VC:

対:

でのコンパイル

PTHREAD_EXIT が Vpp の場合、プログラムはメッセージを表示して終了します。V または Vs の場合は表示しません。

V と Vpp の逆アセンブルは同一であり、V と Vpp の間で PTHREAD_EXIT の定義を変更しても、逆アセンブルの間call Vcall Vpp逆アセンブルで変更されるだけです。

編集:別のコンピューターでは再現できないため、ライブラリまたは何かでエラーが発生したと思います。

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

c - C のマルチライター スレッドセーフ キュー

pthreads を使用してマルチスレッド C アプリケーションに取り組んでいます。データベースに書き込む 1 つのスレッド (データベース ライブラリは単一のスレッドでのみ安全に使用できます) と、データを収集して処理し、結果をデータベース スレッドに送信して保存する必要があるいくつかのスレッドがあります。C で複数ライターのセーフ キューを作成することは「可能」であると言及されているのを見てきましたが、これについて言及されているすべての場所で、「この例では複雑すぎる」と単純に述べられており、単一ライターのセーフ キューを示しているだけです。 .

次のものが必要です。

  • 効率的な挿入と取り外し。他のキューと同様に、O(1) のエンキューとデキューが可能であると想定します。
  • 動的に割り当てられたメモリ、つまりリンクされた構造。キューのサイズに恣意的な制限を設ける必要はないので、配列は実際には探しているものではありません。

編集:読み取りスレッドは、空のキューでスピンしないでください。書き込みがなく、多数の書き込みの短いバーストが数分ある可能性があるためです。