問題タブ [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.

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

android - Android/Linuxスレッドがタイムアウトで参加

タイムアウトを使用して、同様のことを実行できるpthreads API呼び出しはありますpthread_join()か?Windows WaitForSingleObject(HANDLE handle、int timeout)関数に似た関数を探しています。電話があることは知っていpthread_timedjoin()ますが、それは特定のバージョンのLinuxでのみ利用可能です(Androidでは絶対に利用できません)。

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

c++ - pthread_join がコア ダンプされた segfault でクラッシュする

呼び出し時に segfault を引き起こす次のコードがありpthread_joinます。行が多くて申し訳ありませんが、すべての文字が重要になる可能性があります。重要な場合は、同じコードが WinAPI の下で問題なく動作し、エラーも発生しません。

そしてMyThreadProc

そして、多くのコードの最後に、 my struct:

作業オプションは次のとおりです。

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

c - pthread: 切り離されたスレッドに参加すると、errno が正しく設定されません

「pthread_join」の動作をチェックしており、次のコードがあります。

私のプラットフォームで観察された出力 (Linux 3.2.0-32-generic #51-Ubuntu SMP x86_64 GNU/Linux):

  1. 「sleep(1)」をコメントアウトした場合: 42 0

  2. sleep ステートメントを使用すると、以下が生成されます。 1 0

pthread_join の man ページによると、結合できないスレッドに参加しようとするとエラー ' EINVAL ' が発生するはずですが、上記のいずれの場合も errno が設定されていません。また、最初のケースでは、切り離されたスレッドの終了ステータスも取得できるように見えましたが、結果に混乱しています。誰でもこれを説明できますか?ありがとう

[編集]:最初の printf が 'errno' をリセットする可能性があることに気付きましたが、2 つの 'printf' ステートメントの順序を入れ替えた後でも、同じ結果が得られました。

0 投票する
0 に答える
814 参照

pthreads - detach を実行した後にメインスレッドで pthread_exit を呼び出すと、メインスレッドは無効のままになります

新しいスレッドを作成し、実行を新しいスレッドにオフロードして、メイン スレッドを強制終了しようとしています。サンプルプログラムです。

しかし、これはスレッド (およびプロセス?) を無効な状態のままにしています。

それから私はこれを見つけました - http://www.mentby.com/kaz-kylheku/main-thread-pthreadexitsysexit-bug.html

問題の理由は何ですか? スレッドをゾンビ/無効状態のままにすることなく、同じことを達成する方法はありますか?

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

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 は、キャストなしで整数からポインタを作成します。"

敬具レオ

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

c - pthreads を使用してファイルを 1 行ずつ読み取っています ... 予期せず終了します

次のコードがあります。

ファイルから行を読み取りますが、しばらくすると予期せず終了し、エラーメッセージは表示されません。私は何かを台無しにしたと思います。

pthreads を使用してファイルを 1 行ずつ読み取るにはどうすればよいでしょうか (プログラム全体を台無しにしないことを意味します)。

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

c - pthread は配列に値を返します

現在、pthreads を使用するプロジェクトに取り組んでいます。これまでのプロジェクトは、ユーザーが指定した数のスレッドを開始し、各スレッドでいくつかの作業を行ってから閉じます。各スレッドは、動的に割り当てられたメモリ配列に格納されます。私はこれを使用して行います:

threads = malloc(number_of_threads * sizeof(pthread_t));

次に、for ループで各スレッドを作成します。

次に行う必要があるのは、これらのスレッドの戻り値を格納することです。私の理解では、戻り値を格納したいポインターのアドレスを pthread_join に渡す必要があります。ここで少し混乱します。この時点までのポインターは問題ありませんが、私の脳は一種のメルトダウンしています(笑)。これはこれを達成する方法に関する私の考えですが、これが正しいとは確信していません:

次に、戻り値を取得するには、次のようにします。

これについての助けをいただければ幸いです。

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

c++ - C ++でpthreadからdouble値を返す方法は?

このスレッドを読んだ後:pthreadから整数値を返す方法についてCのスレッドから値を返す方法doubleで機能するかどうかを確認するためにテストしましたが、機能しませんでした。整数42を返す代わりに、元のスレッドで説明されているように、pthreadプロセスからdouble、long、または文字列を返す方法はありますか?

はいの場合、どのように?

また、10個の位置と10個のpthreadの静的配列が毎回異なる位置を変更している場合、問題が発生しますか?たとえば、「スレッド0は配列[0]のみを変更し、スレッド1は配列[1]のみを変更するなど」のようになります。

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

c - main関数の外部からpthread_createを呼び出します

私はこのようなことをしたい:

アイデアは、いくつかのスレッドを生み出し、より多くの作業を続けmainます...そして、より多くの作業を行ったら、スレッドが終了するのを待ちます。

正常にコンパイルされますが、data内部でアクセスされると構造体が破損しますdo_work_son。これは、join inを呼び出しているにもかかわらず、スレッドが終了しているためだと思いますmainpthread_{create,join}両方の呼び出しをstart_threadに移動すると、正常に機能しますが、メイン関数がwhileループによってブロックされます。私はそれをこのようにすることに夢中ですか?

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

c - スレッドから単一の整数値を返す

スレッドから整数値を返すのに助けが必要です。私はいくつかのことを試しましたが、それを機能させることができません。私はCが初めてで、はい、これは宿題ですが、行き詰まっており、これについて助けが必要です. スレッドでポインターを作成しましたが、それをメインに戻すと、正しい値が表示されません。私はmallocを試しましたが、それもうまくいきません。ヒントをいただければ幸いです。

コードは次のとおりです。