[解決済み] pthread_create()で呼び出される関数に複数の引数がある?
2022-02-18 09:12:54
質問
別スレッドで呼び出したい関数に、複数の引数を渡す必要があります。私は 読む この典型的な方法は、構造体を定義し、そのポインタを関数に渡し、そのポインタから引数をデリファレンスすることです。しかし、これをうまく実行することができません。
#include <stdio.h>
#include <pthread.h>
struct arg_struct {
int arg1;
int arg2;
};
void *print_the_arguments(void *arguments)
{
struct arg_struct *args = (struct arg_struct *)args;
printf("%d\n", args -> arg1);
printf("%d\n", args -> arg2);
pthread_exit(NULL);
return NULL;
}
int main()
{
pthread_t some_thread;
struct arg_struct args;
args.arg1 = 5;
args.arg2 = 7;
if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) {
printf("Uh-oh!\n");
return -1;
}
return pthread_join(some_thread, NULL); /* Wait until thread is finished */
}
これに対する出力は、次のようになるはずです。
5
7
しかし、実際に実行すると、こうなります。
141921115
-1947974263
何が間違っているのか、どなたかご存知ですか?
解決方法は?
というのは
struct arg_struct *args = (struct arg_struct *)args;
ではなく
struct arg_struct *args = arguments;
関連
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み】警告:式の結果が未使用の場合
-
[解決済み】配列型char[]が代入できない [重複]。
-
[解決済み] pthread_create が動作しない。引数 3 の警告を渡す。
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み] struct で "warning: useless storage class specifier in empty declaration" (警告: 空の宣言での無駄なストレージクラス指定子)
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】C言語でpow( )への未定義参照、math.hを含むにもかかわらず【重複】。
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない