2015-05-29 63 views
0

我有函數A和函數B.兩個函數同時訪問數據庫

函數A循環運行。每6秒更新一次數據庫。

功能B在用戶更改某些內容時更新數據庫。

從長遠來看,這兩個函數試圖訪問數據庫,導致在sqlite崩潰相同。

請建議一種方法來避免這種情況。

下面是我的函數B

while(1) 
    { 
     tvAudioMgrInstance->updateDatabase(); 
     if(errno != EINTR) 
     { 
      // In Android sleep() function takes argument as seconds 
      rc = sleep(PERIODIC_UPDATE_DATABASE_TIME); 
     } 

     if((rc != 0)||(errno == EINTR))//even checking errno alone is enough..as errno is global to the thread alone 
     { 
      tvAudioMgrInstance->updateDatabase(); 
#if TVAUDIOMANAGER_LOG_ENABLE   
      ALOGD("Exit AUDMGR Pthread"); 
#endif 
      break; 
     } 
    } 
+0

一些代碼會很好嗎? – Arion

+0

也許這有點幫助http://stackoverflow.com/questions/4060772/sqlite3-concurrent-access – tanaydin

+0

這是一些很好的信息。我的函數執行寫入操作。理想情況下,sqlite寫操作應該被鎖定,但是會發生這種崩潰。我想通過使用一些標誌避免函數調用?那會很好。? – user3374737

回答