这似乎是一个简单的任务,但它不起作用。我的线程函数运行在一个循环中,并始终将数据写入数组。但有时我想从我的主要功能中读取这些数据。因此,阅读功能应理想地暂停线程,读取数据,然后恢复线程。但是,读取的值不正确,似乎已损坏。也许有些不妥:pthread读/写同步
线程FCT:
void threadfct()
{
while (1)
{
pthread_mutex_lock(&mutex);
data = write_data();
pthread_mutex_unlock(&mutex);
}
}
功能是从主循环调用应改为由线程函数写入的数据:
void read_data()
{
printf("Daten: %f\n", data[0]);
}
您需要显示更多上下文。你是否真的在没有获取互斥锁的情况下阅读数据? –
使用std :: thread。 – 2017-10-21 17:09:20
@FlorianWeimer暗示的是,互斥体只有在两个线程都在进入临界区之前试图进入才会有效。 – CplusPuzzle