2010-06-12 4 views
2

PHP의 SPLFileObject 메소드가 원자 단위 (예 : thread-safe)인지 아닌지 궁금합니다.SPLFileObject는 원 자성입니까?

그렇지 않은 경우 flock()을 사용할 자체 클래스를 구현 하겠지만이 정도면 충분합니까? 무리 함수는 실제로 스레드로부터 안전합니까? 내가 파일 fopen() 후에 충돌이 발생하지만, 전에 내가 flock()이라면?

답변

2

"스레드 안전"이라는 용어를 잘못 사용하는 것 같습니다. 스레드 보안은 (주로) 스레드 코드의 공유 리소스에 관한 것입니다. PHP에는 스레딩이없고 파일 핸들은 공유 리소스가 아닙니다. 파일은 공유 리소스입니다. 나는 당신이 "race condition"이라는 용어를 찾고 있다고 생각합니다.

파일이 fopen()이지만 그 전에 I가 flock() 인 경우 충돌이 발생합니다.

SPLFileObject를 사용하지 않는 경우와 동일한 문제가 발생합니다. 그냥 절대 자르지 말고 자르면, 항상 자물쇠가 열리면 자르고 자릅니다. 파일 열기 및 잠금 경쟁 조건이 작동하는 방식을 이미 알고있는 경우 표준 절차 여야합니다.