這似乎是一個簡單的任務,但它不起作用。我的線程函數運行在一個循環中,並始終將數據寫入數組。但有時我想從我的主要功能中讀取這些數據。因此,閱讀功能應理想地暫停線程,讀取數據,然後恢復線程。但是,讀取的值不正確,似乎已損壞。也許有些不妥: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