2011-08-06 5 views
0

비슷한 질문이 있지만 여러 스레드에서 sqlite db 사용에 대한 명확한 대답을하지 않습니다. (즉 DB)복수 스레드에서 sqlite 액세스

class MainActivity extends Activity { 
DbHelper db; //extends sqliteopenhelper 
... 
void M1() { 
    db.getReadableDatabase(); 
    Cursor c = db.query("...." 
    ... 
    db.close(); 
} 

void M1() { 
    db.getReadableDatabase(); 
    Cursor c = db.query("...." 
    ... 
    db.close(); 
} 

확인이 멀티 스레드가 아니라 질문

  1. 그것이 sqliteopenhelper 인스턴스의 같은 인스턴스를 사용하는 것이 문제가 될 않는 것입니다 : 다음과 같은 시나리오를 생각해보십시오 위에서와 같이 여러 가지 방법으로 여러 번 열거 나 닫을 수 있습니까?
    그리고 내 시나리오는 다음

    myAsync extends AsyncTask 
    doInBackground(.. {
    do something using M1(); //this is a background thread }} onResume()...{ myAsync.execute(); M2(); //this is the main thread ... }
  2. 는 비동기 시나리오에서, 아마 동시에 같은 데이터베이스에 액세스 할 수있는 두 가지 방법으로 볼 경우 (방법 작성에 대한 전용 - 읽기 위해?). 그러나 그들은 SqliteOpenHelper의 동일한 인스턴스를 사용하고 있습니다. 그것이 충돌을 야기시킬 수 있습니까? 그렇다면 이것을 피하는 방법은 무엇입니까?

  3. 나는 sqlite 데이터베이스와 동시성에 대해 더 알고 싶다.
    어떤 아이디어라도 감사할만한 아이디어가있다.

답변

0

나중에이없는 충돌의 가능성이 있지만 DB를 다른 스레드가 aquired 때 우리가 키워드가 다음 동기화 사용하는 경우, 당신은 스레드 즉, 우선 순위 등의 "동기화"개념 갈 수 닫을 수 있습니다, 하나 개의 스레드가 완료 작업이 시작되면 다른 스레드가 시작됩니다

+0

"동기화"에 대해 언급 해 주셔서 감사 드리며, 일부는 읽는 경우 제한이없고 충돌이 없다고 말합니다. 그게 사실이야? 그리고 나는 또한 동기화에 대해 배우고 싶지만 그 주위에는 아무 것도 유용하지 않습니다. 어떤 링크, 블로그, 출처를 추천 해 주시겠습니까? 나는 이미 android dev을 검색했다. –

+0

확실한 정보가 있으면 자세히 알려주세요. –

관련 문제