2011-10-13 5 views
1

fmdb를 사용하여 동일한 데이터베이스에 데이터를 읽고 쓰는 데 문제가 있습니다.동일한 백그라운드 스레드에서 FMDB 프로세스를 실행 하시겠습니까?

다른 클래스가 주 스레드의 동일한 데이터베이스에서 데이터를 읽는 동안 1 클래스가 백그라운드 스레드에서 데이터베이스에 데이터를 쓰는 인스턴스가 있습니다. 읽기 및 쓰기 프로세스는 다음과 같이 상당히 큰 데이터를 처리합니다. 몇 백 NSDictionary.

fmdb가 위의 시나리오에서 읽고 쓰려고 할 때 내 응용 프로그램을 중단시키는 "thread-safe"가 아니라고 들었습니다. 두 개의 fmdb 프로세스를 동일한 스레드에서 실행하여 응용 프로그램이 충돌하지 않도록 제안을 들었습니다.

NSInvocationOperation을 사용하여 백그라운드 스레드에서 실행 해 보았지만 충돌이 발생하여 실제로 충돌을 일으킨 별도의 백그라운드 스레드에서 실행 중임을 알게되었습니다.

질문 : 그렇다면 모든 fmdb 프로세스가 동일한 백그라운드 스레드에서 실행되도록하여 어떻게하면 내 응용 프로그램이 손상되지 않도록 할 수 있습니까?

또는 SQL 데이터를 처리 할 수있는 대안이 있습니까?

* 내가 명확하게 설명하지 않은 경우 미안해합니다. 명확히 밝힙니다.

읽어 주셔서 감사합니다.

답변

1

FMDB의 최신 문서를 보면 스레드가 FMDB의 스레드 안전 사용을 허용하는 대기열을 제공함을 알 수 있습니다. 이 알려 센스 -하지 않을 경우 https://github.com/ccgus/fmdb

그것을 밖으로 시도하고 :

3

FMDatabaseQueue이 경우를 위해 특별히 만들어졌다.

관련 문제