보조 프로세서가 수정할 수있는 메모리가 있습니다. 내가 그것에 내 포인터를 휘발성으로 표시했습니다,하지만 그 메모리를 fwrite에서 소스로 사용한다면 리눅스 캐싱 (커널이 코 프로세서가 그 위치에서 데이터를 변경 한 후까지 복사를 연기 함) 또는 다른 것에 대해 걱정해야합니다 ? 예를 들어C - volatile 소스의 fwrite()
:
volatile My_Data_t* samples;
fwrite((void *) samples, 4, 1, fp);
[write (2)'] (http://linux.die.net/man/2/write)와 달리'fwrite'는 C 표준 라이브러리에서 더 버퍼링 될 수 있습니다. – 5gon12eder
버퍼링 된 I/O를 사용하면 플러시 전에 다른 배열에 복사본이 만들어졌습니다. 그래도 문제는 해결되지 않습니다. 'write'는'fwrite'보다 동시성 문제에서이 호출을 더 이상 안전하게하지 않습니다. – selbie