物理シミュレーション用のプログラムを作成しようとしています。1 つは計算用、もう 1 つは GUI 用の 2 つのスレッドを使用します。それらの間でデータを交換するには、構造体を使用します
struct sim_data {
int running;
int steps;
int progress;
...
};
それを別のスレッドに含めます
void *sim(void *args) {
struct sim_data *my_data;
my_data=(struct sim_data *)args;
...
}
で値を設定する場合
my_data->progress=1000;
データは同じスレッドで利用できますが、2 番目のスレッドでは確実ではありません。プログラムを開始して2番目のスレッドで別の値を読み取り、最初のスレッドに書き込む場合、10%の可能性があると思います。データはループで書き込まれますが、タイミングの問題ではないと思います。
これはとても奇妙だと思います。何がうまくいかないと思いますか?