SQLITE 多进程查询出错database is locked

时间:2021-03-30 17:38:53

程序比较简单:

父进程查询数据库A表,没有更新操作

子进程同时查询数据库A表,查询出来的内容更新B表。

两个进程都放到while(1)循环中,速度慢的话就是2S执行一次就没有错,执行的速度快的话就会报错。

跑了一段时间就会报错 提示database is locked。

网上查了查说是多个进程可以同时查询,一个时间内只能有一个更新。我这显然只有一个更新。不解  待续````

查了很久无果之后·写了个简单的while(1)循环

while ( 1 )   
 {    
  if ( SQLITE_OK == sqlite3_get_table(db, sqlite_buf, &result, &nrow, &ncolumn, &errmsg))   
  {
   printf("-----------success-------errmsg = %s\n", errmsg);
   break;
  }
  else
  {    
   printf("-------------fail--------errmsg = %s\n", errmsg);
   usleep(500000);   
   continue;   
  }

网上有说用信号量做进程间同步的··我感觉效果差不多,不如这样简单···