我尝试编写一个物理模拟程序。我使用两个线程,一个用于计算,一个用于 gui。为了在它们之间交换数据,我使用了一个结构
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;
数据在同一个线程中可用,但在第二个线程中不可靠。当启动程序在第二个线程中读取不同的值然后在第一个线程中写入时,我猜想有 10% 的机会。虽然数据是循环写入的,但我认为这不是时间问题。
我觉得这很奇怪。任何猜测出了什么问题?