之前项目中利用sqlite存储解析后的数据,网上的资料并没有找到sqlite本身机制对于多线程如何支持,所以就利用每个线程一个库,最后在合并,今天看到读写锁SRWLOCK时,决定尝一下解决多线程写sqlite的问题

如愿解决:

测试代码

main函数中:

sqlite3_open_v2("test.db",&m_db,SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE,NULL);	
int nret = sqlite3_exec(m_db,"create table tab1 (ID TEXT)",NULL,NULL,NULL);

InitializeSRWLock(&srwLock);
for (int i = 0 ; i < 10 ; i++)
{
_beginthreadex(NULL,0,WriteThreads,NULL,0,NULL);
}

线程函数:

unsigned WINAPI WriteThreads(void *pPM)  {  			while(1)	{		Sleep(2000);		AcquireSRWLockExclusive(&srwLock);		printf("写线程\n");		char chsql[1024] = {0};		sprintf(chsql,"insert into tab1 values ('thread 0X%08X write 1')",GetCurrentThreadId());		int nret = sqlite3_exec(m_db,chsql,NULL,NULL,NULL);		if(nret != SQLITE_OK)		{			printf("================write error============\n");		}		ReleaseSRWLockExclusive(&srwLock);	}	return 0;  }

结果展示:


更多相关文章

  1. SQL Server 2008使用sproc中的函数
  2. MYSQL存储过程,函数,光标
  3. 请问mysql中有没有类似math.max(1,2)这种可以比较两个值中最大值
  4. 线程往数据库里插数据时偶尔会报错
  5. SQL 函数如何设置参数默认值
  6. 使用不同的条件,在同一个表的一个SQL查询中使用多个聚合函数
  7. PHP OOP - 调用非obj上的成员函数[重复]
  8. sqlserver的常用函数
  9. SQLSERVER2005调试存储过程跟函数

随机推荐

  1. PHP的一些安全设置(优化)
  2. PHP中字符串处理的一些常用函数
  3. PHP7.4新特性汇总
  4. 关于PHP目录操作总结
  5. mysql正则匹配模糊查询某个字段
  6. TP6验证码验证失败的原因以及解决办法
  7. PHP对一组数进行重新排列(冒泡算法)
  8. 怎么循环查看php-fpm的内存占用情况
  9. 精选PHP中常用的20个类库
  10. 分析PHP错误处理(核心特性)