이것은 간단한 작업 인 것처럼 보이지만 작동하지 않습니다. 내 스레드 함수는 루프에서 실행되며 배열에 항상 데이터를 씁니다. 하지만 때로는이 데이터를 주요 기능에서 읽고 싶습니다. 따라서 read-funtion은 이상적으로 스레드를 일시 중지하고 데이터를 읽은 다음 스레드를 다시 시작해야합니다. 그러나 읽은 값이 정확하지 않고 손상된 것으로 보입니다. 아마 뭔가 문제가있다 :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를 사용하십시오. –
@FlorianWeimer가 암시하는 바는 양쪽 스레드가 임계 영역에 들어가기 전에 뮤텍스를 사용하려고 할 때만 뮤텍스가 작동한다는 것입니다. – CplusPuzzle