0

C で少し問題が発生しています。私は比較的新しいプログラマーで、構造体を作成して参照によって 2 つのスレッドに渡そうとしています。1 つのスレッドで情報を構造体に入れ、もう 1 つのスレッドで情報を追加して出力する必要があります。私が話していることの疑似コードは以下のとおりです。

typedef struct{ int x, y }addme;
main{
  addme argstopass;
  create_thread(method_store, (void*)&argstopass);
  create_thread(method_calc, (void*)&argstopass);
  //Code to tell store thread 'only' to run
  //Code to tell calc thread to run when store is finished.
  join_both_threads;
}

void method_store(void* args){
  addme info = *((addme*)args);
  info.a = 7;
  info.b = 3;
}  

void method_calc(void* args){
  addme info = *((addme*)args);
  print(info.a+info.b);
}

問題は、情報を追加しようとすると、store メソッドが更新されていないように見えることです。スレッドに渡される参照は同じなので、両方が同じ情報へのポインターを持っている限り、同じ情報にアクセスできない理由がわかりません。

ここで誰かが私が間違っていることを教えてくれることを願っています。不明な点がある場合は、コメントしてください。明確にするのに役立ちます。

4

2 に答える 2