fopen/fwrite 및 멀티 스레딩?fopen/fwrite 및 멀티 스레딩?
일부 멀티 스레딩 프로그램은 동일한 파일을 열고 각 스레드는 파일에 대한 파일 포인터를 만듭니다.
다른 프로그램에서 생성 된 다른 스레드가 파일의 내용을 읽는 동안 임의의 시간에 파일을 업데이트하는 paricular 프로그램에서 만든 스레드가 하나 있습니다.
글타래 쓰레드가 파일의 내용을 변경하고 다른 쓰레드가 내용을 읽으려고하면 경주/데이터 불일치 문제가 발생합니다.
여기서 문제는 파일을 업데이트하는 스레드가 파일 내용을 읽는 스레드를 만드는 프로그램과 다른 exe 프로그램으로 컴파일해야하므로 프로그램 내 수준의 스레드 제어가 불가능해진다는 점입니다.
내 솔루션은 하드 디스크에 아주 작은 "플래그"파일을 생성되는 파일의 세 상태를 나타냅니다
파일의 내용을 업데이트 1) 쓰기 - 스레드;
2) 읽기 스레드가 파일의 내용을 읽는 중입니다.
3) 1) 또는 2);
필요할 때마다이 플래그 파일을 사용하여 스레드를 차단합니다.
이 문제에 대한 좀 더 컴팩트하고/깔끔한 해결책이 있습니까?
제안하는 것은 세마포어이며 훌륭한 해결책입니다 :-) 파일을 잠 그거나 파일의 첫 번째 바이트로 세마포어를 넣을 수 있습니다 ... 어느 쪽이든 그것은 멀티 스레딩에 관한 것이 아닙니다. –
파일 잠금이 있습니다. 그리고 당신이 제시 한 주요 동시성 문제는 스레드가 아닌 프로세스 사이입니다. 어떤 운영 체제에 있습니까? – UmNyobe
당신은 파일 잠금에 대해 더 설명 할 수 있습니까? 어떻게 사용하는지, 감사합니다. – 60080