다른 스레드가 해당 파일에 액세스하려고 시도하는 동안 하나의 스레드가 문서 디렉토리에 파일을 쓰는 중입니다. 그렇지 않으면 사용하기 위해 사용할 수 있는지 확인하십시오. 그렇지 않으면 임시 변수가 대신 사용됩니다. 내 질문은 다른 스레드가 파일 쓰기를 완료했는지 또는 파일을 검사하면서 쓰는지를 어떻게 테스트 할 수 있는지입니다.다른 스레드가 ressource에 액세스하고 있는지 확인하는 방법?
2
A
답변
2
완료를 확인하는 대신 보조 파일을 사용하여 쓰기를 원 자성으로 만들 수 있습니다.
[NSString writeToFile:... atomically:YES encoding:... error:...]
과 비슷한 보조 파일을 지원하는 API를 사용하여 문서를 작성하는 경우 스위치를 전환하는 것만 큼 쉽게 변경할 수 있습니다.
파일을 직접 작성하는 경우 다른 이름의 파일에 먼저 쓰고 파일을 닫은 다음 원하는 이름으로 바꿉니다.
예를 들어 문서를 @"myfile.doc"
에 쓰는 호출에서 문서를 @"myfile.doc_aux"
에 쓸 수 있고 @"myfile.doc"
으로 바꿀 수 있습니다. 쓰기가 완료되기 전에 두 번째 스레드가 @"myfile.doc"
의 존재를 확인하면 검사가 실패합니다. 그러나 검사가 성공하면 파일 작성이 완료되었음을 확신 할 수 있습니다.
2
다른 스레드에서 사용 중인지 확인하고 싶지 않습니다. 다른 스레드가 확인 후 바로 사용할 수 있기 때문입니다.
대신 잠금 또는 동기화 지점이 필요합니다. @synchronized()
과 NSLock을 살펴보십시오. 둘 다 멀티 스레딩 중에 데이터 무결성을 보장 할 수 있습니다.
관련 문제
- 1. Windows에서 장치에 액세스하고 있는지 확인하는 방법?
- 2. 사용자가 폴더에 액세스하고 있는지 확인하는 방법?
- 3. 스레드가 뮤텍스를 보유하고 있는지 확인하는 방법 C++
- 4. 사용자가 LAN에서 액세스하고 있는지 확인하는 방법은 무엇입니까?
- 5. 다른 프로세스에서 파일에 액세스하고 있는지 확인하는 방법은 무엇입니까?
- 6. 앱이 안드로이드의 내부 파일에 액세스하고 있는지 확인하는 방법
- 7. 다른 프로세스의 스레드가 잠드고 있는지 확인
- 8. 스레드가 이벤트를 기다리고 있는지 확인하는 방법은 무엇입니까?
- 9. 작업 스레드가 차단되었는지 확인하는 방법
- 10. 스레드가 살아 있는지 여부를 확인하는 방법 vb.net에서 스레드 이름을 사용하여
- 11. Java의 스레드 풀에 사용 가능한 스레드가 있는지 확인하는 방법
- 12. 스레드가 반환되었는지 여부를 확인하는 방법?
- 13. 다른 스레드가 wait() ing인지 확인하는 방법은 무엇입니까?
- 14. 스레드가 Python으로 끝났는지 확인하는 방법
- 15. 문자열이 다른 문자열에 있는지 확인하는 방법
- 16. 노드가있는 다른 드라이브에 파일이 있는지 확인하는 방법
- 17. NSArray에 다른 배열의 값이 있는지 확인하는 방법
- 18. 배열에 다른 배열이 포함되어 있는지 확인하는 방법
- 19. 다른 Google Sheet에 셀이 있는지 확인하는 방법
- 20. 문자열이 다른 문자열에 있는지 확인하는 방법
- 21. 스레드가 실행 완료되었는지 확인하는 방법
- 22. 스레드가 중단되었거나 완료되었는지 확인하는 방법
- 23. 창이 있는지 확인하는 방법
- 24. 방문자가 휴대 전화에서 웹 사이트에 액세스하고 있는지 확인하는 방법은 무엇입니까?
- 25. 이메일이 있는지 확인하는 방법
- 26. NSUserDefaults가 있는지 확인하는 방법
- 27. 비어 있는지 확인하는 방법
- 28. GraphicsEnvironment가 있는지 확인하는 방법
- 29. TextView가 있는지 확인하는 방법
- 30. CALayer가 있는지 확인하는 방법