두 개의 파일이 하나의 파일에 접근하게 된다면....
동시에 파일을 오픈하게 되면 쓰레드간의 동기화가 되지 않습니다.
동기화가 안된다는 것은
thread A, B가 파일 f를 연다고할때
시간 순
A가 fopen
B가 fopen
A가 write
B가 write
A가 close
B가 close
하게 된다면 최종적으로 A가 write한 글은 없어집니다...
그래서 나온게 mutex!!!
thread A가 mutex로 lock하고 파일 쓰기 권한을 얻습니다.
A작업이 끝나면 mutex를 unlock하면 그 다음 B가 자원을 얻어 쓰기를 시작하게 됩니다!!
제가 알기론...
두 개의 파일이 하나의 파일에 접근하게 된다면....
동시에 파일을 오픈하게 되면 쓰레드간의 동기화가 되지 않습니다.
동기화가 안된다는 것은
thread A, B가 파일 f를 연다고할때
시간 순
A가 fopen
B가 fopen
A가 write
B가 write
A가 close
B가 close
하게 된다면 최종적으로 A가 write한 글은 없어집니다...
그래서 나온게 mutex!!!
thread A가 mutex로 lock하고 파일 쓰기 권한을 얻습니다.
A작업이 끝나면 mutex를 unlock하면 그 다음 B가 자원을 얻어 쓰기를 시작하게 됩니다!!
조언 감사합니다!!
조언 감사합니다!!
각자 다른 파일포인터를 쓰면 문제가 됩니다.
각자 다른 파일포인터를 쓰면 문제가 됩니다.
하나의 파일포인터를 쓰면, libc 구현에 따라 다른데, 일반적으로 리눅스에서 사용하는 glibc에서는 fprintf계열은 thread safe하기 때문에 문제는 없습니다.
조언 감사합니다!!
조언 감사합니다!!
mutex
제목 보자마자
오 내가 설명해 줄 수 있겠다...
아... 그거 머지 .............하다가
완벽한 댓글을 보고 생각났습니다
mutex 굿굿
댓글 달기