問題タブ [pthread-join]
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.
android - Android/Linuxスレッドがタイムアウトで参加
タイムアウトを使用して、同様のことを実行できるpthreads API呼び出しはありますpthread_join()
か?Windows WaitForSingleObject(HANDLE handle、int timeout)関数に似た関数を探しています。電話があることは知っていpthread_timedjoin()
ますが、それは特定のバージョンのLinuxでのみ利用可能です(Androidでは絶対に利用できません)。
c++ - pthread_join がコア ダンプされた segfault でクラッシュする
呼び出し時に segfault を引き起こす次のコードがありpthread_join
ます。行が多くて申し訳ありませんが、すべての文字が重要になる可能性があります。重要な場合は、同じコードが WinAPI の下で問題なく動作し、エラーも発生しません。
そしてMyThreadProc
:
そして、多くのコードの最後に、 my struct
:
作業オプションは次のとおりです。
c - pthread: 切り離されたスレッドに参加すると、errno が正しく設定されません
「pthread_join」の動作をチェックしており、次のコードがあります。
私のプラットフォームで観察された出力 (Linux 3.2.0-32-generic #51-Ubuntu SMP x86_64 GNU/Linux):
「sleep(1)」をコメントアウトした場合: 42 0
sleep ステートメントを使用すると、以下が生成されます。 1 0
pthread_join の man ページによると、結合できないスレッドに参加しようとするとエラー ' EINVAL ' が発生するはずですが、上記のいずれの場合も errno が設定されていません。また、最初のケースでは、切り離されたスレッドの終了ステータスも取得できるように見えましたが、結果に混乱しています。誰でもこれを説明できますか?ありがとう
[編集]:最初の printf が 'errno' をリセットする可能性があることに気付きましたが、2 つの 'printf' ステートメントの順序を入れ替えた後でも、同じ結果が得られました。
pthreads - detach を実行した後にメインスレッドで pthread_exit を呼び出すと、メインスレッドは無効のままになります
新しいスレッドを作成し、実行を新しいスレッドにオフロードして、メイン スレッドを強制終了しようとしています。サンプルプログラムです。
しかし、これはスレッド (およびプロセス?) を無効な状態のままにしています。
それから私はこれを見つけました - http://www.mentby.com/kaz-kylheku/main-thread-pthreadexitsysexit-bug.html
問題の理由は何ですか? スレッドをゾンビ/無効状態のままにすることなく、同じことを達成する方法はありますか?
c - 配列内の関数から結果を受け取る pthread_join
私は C で pthreads を使用していますが、(再び) 問題が発生しました。結果を関数の配列としてメイン スレッドに送信しようとしています。
このコードは、各ワーカー (1 ワーカー/行) の最大値を見つけ、その値のインデックスを保存します。ここまでは順調ですね。この関数の下で私の問題を説明します。このコードは私が望むことを行います。
私の問題は、pthread_join で maxValueResult[0] のみが機能し、maxValueResult[1] と maxValueResult[2] から結果を受け取るときに、アドレスか何かしか取得しないことです。前: " return *maxValueResult;" 3 つの値はすべて正しく、「結果: maxValue: 95 cord[3,3]」のようになります。
ここで私は pthread_join を呼び出します:
「Results: maxValue: 95 cord[0,1629976061]」と出力されます。ここで、95 は正しいですが、他の 2 つは正しくありません。これを修正するにはどうすればよいですか? おそらく私のコードからわかるように、私はあまり経験がありません。
編集: 警告について話すのを忘れていました。残念ながら、それらはスウェーデン語ですが、とにかくここに投稿します。互換性のないポインター型 /usr/include/pthread.h:144:5: 注: 'void **' が予期されますが、引数の型は 'int * (*)[3]' です matrixSumB.c: 関数 "Worker" 内: matrixSumB .c:172:1: 警告: return は、キャストなしで整数からポインタを作成します。"
敬具レオ
c - pthreads を使用してファイルを 1 行ずつ読み取っています ... 予期せず終了します
次のコードがあります。
ファイルから行を読み取りますが、しばらくすると予期せず終了し、エラーメッセージは表示されません。私は何かを台無しにしたと思います。
pthreads を使用してファイルを 1 行ずつ読み取るにはどうすればよいでしょうか (プログラム全体を台無しにしないことを意味します)。
c - pthread は配列に値を返します
現在、pthreads を使用するプロジェクトに取り組んでいます。これまでのプロジェクトは、ユーザーが指定した数のスレッドを開始し、各スレッドでいくつかの作業を行ってから閉じます。各スレッドは、動的に割り当てられたメモリ配列に格納されます。私はこれを使用して行います:
threads = malloc(number_of_threads * sizeof(pthread_t));
次に、for ループで各スレッドを作成します。
次に行う必要があるのは、これらのスレッドの戻り値を格納することです。私の理解では、戻り値を格納したいポインターのアドレスを pthread_join に渡す必要があります。ここで少し混乱します。この時点までのポインターは問題ありませんが、私の脳は一種のメルトダウンしています(笑)。これはこれを達成する方法に関する私の考えですが、これが正しいとは確信していません:
次に、戻り値を取得するには、次のようにします。
これについての助けをいただければ幸いです。
c++ - C ++でpthreadからdouble値を返す方法は?
このスレッドを読んだ後:pthreadから整数値を返す方法についてCのスレッドから値を返す方法doubleで機能するかどうかを確認するためにテストしましたが、機能しませんでした。整数42を返す代わりに、元のスレッドで説明されているように、pthreadプロセスからdouble、long、または文字列を返す方法はありますか?
はいの場合、どのように?
また、10個の位置と10個のpthreadの静的配列が毎回異なる位置を変更している場合、問題が発生しますか?たとえば、「スレッド0は配列[0]のみを変更し、スレッド1は配列[1]のみを変更するなど」のようになります。
c - main関数の外部からpthread_createを呼び出します
私はこのようなことをしたい:
アイデアは、いくつかのスレッドを生み出し、より多くの作業を続けmain
ます...そして、より多くの作業を行ったら、スレッドが終了するのを待ちます。
正常にコンパイルされますが、data
内部でアクセスされると構造体が破損しますdo_work_son
。これは、join inを呼び出しているにもかかわらず、スレッドが終了しているためだと思いますmain
。pthread_{create,join}
両方の呼び出しをstart_threadに移動すると、正常に機能しますが、メイン関数がwhileループによってブロックされます。私はそれをこのようにすることに夢中ですか?
c - スレッドから単一の整数値を返す
スレッドから整数値を返すのに助けが必要です。私はいくつかのことを試しましたが、それを機能させることができません。私はCが初めてで、はい、これは宿題ですが、行き詰まっており、これについて助けが必要です. スレッドでポインターを作成しましたが、それをメインに戻すと、正しい値が表示されません。私はmallocを試しましたが、それもうまくいきません。ヒントをいただければ幸いです。
コードは次のとおりです。