2012-10-07 2 views
0

동일한 파일을 가리키는 두 개의 QFile-pointer은 서로 다른 스레드에 속합니다. 하나는 파일에 데이터를 쓰고 다른 하나는 읽습니다. 하지만 한 가지 작업 만 읽거나 쓰고 싶습니다.여러 스레드, 한 번에 하나씩 읽기/쓰기

if(!this->file->exists()) { 
    qDebug()<<"The file is not exists"; 
} 
if(this->file->isOpen()) { 
    qDebug()<<"The file is open"; 
} 

다른 방법을 넣어 보겠습니다. 파일이 열렸는지 확인하는 방법은 무엇입니까?

나는 file.isOpen()을 테스트합니까? 작동하지 않습니다. 어떻게해야합니까?

+3

"C/C++"는 언어가 아닙니다. 이것이 C++이기 때문에'c' 태그를 제거하십시오. –

+0

'file.is_open()'은 올바른 구문입니다. –

+1

은 QFile 포인터 스레드 안전합니까? Else는 범위가 지정된 잠금을 사용합니다 (뮤텍스에서). –

답변

2

다른 사용자에게 동일한 파일이 열려 있는지 확인하려면 isOpen을 사용하려고합니다. AFAIK isOpen은 현재 QFile 인스턴스가 다른 QFile 인스턴스가 아닌 파일을 열 었는지 알려줍니다.

다른 스레드가 동일한 파일을 읽거나 쓰지 못하도록하는 유일한 방법은 파일 잠금입니다.

Qt가 더 많은 OS 종속적 API를 탐구 할 필요없이이 작업을 수행 할 수 있는지 확실하지 않습니다.

+0

Thx ~ 나는 그것을 할 수있는 더 긴 방법을 발견했다. .. –

관련 문제