首 页 | 产品大全 | 采购参考 | 厂商专区 | 渠道商情 | 商 城 | 二 手 | Internet服务 | 社 区
赛贝斯软件(中国)有限公司北京总部
 如何成为Myprice加盟厂商
公司首页 公司新闻 产品信息 技术支持 驱动下载 使用手册 解决方案
该厂商统计信息
该厂商目前得分:0
技术支持指数:0
 参与评论人数:1
公司旗下品牌
SYBASE/赛贝斯
经营范围
>>数据库软件
>>开发软件
资源下载
>> 产品驱动下载
>> 解决方案下载
>> 使用手册下载
网友互动
>> 我要向该厂商提问
>> 查看全部在线问题
联系方式
厂商电话:010-68568488
厂商网址:
http://www.sybase.com.cn
E_mail :给厂商发送Email
 技术支持  给厂商技术支持打分 
常见问题  
 
  ◇  全部SYBASE/赛贝斯
SQLite线程安全吗?
答案:SQLite 是线程安全的。由于很多用户会忽略我们在上一段中给出的建议, 我们做出了这种让步。但是,为了达到线程安全,SQLite在编译时必须将 SQLITE_THREADSAFE 预处理宏置为1。在Windows和Linux上, 已编译的好的二进制发行版中都是这样设置的。 如果不确定你所使用的库是否是线程安全的,可以调用 sqlite3_threadsafe() 接口找出。

  在 3.3.1 版本之前,一个 sqlite3 结构只能被用于调用 sqlite3_open 创建的同一线程。你不能在一个线程中打开数据库, 然后将数据库句柄传递给另外一个进程使用。 这主要是由于在好多通用的线程实现(如RedHat9)中的限制引起的(是Bug吗?)。 特别的,在有问题的系统上,一个进程创建的 fcntl() 锁无法被其它线程清除或修改。 所以,由于 SQLite 大量使用 fcntl() 锁做并发控制, 如果你在不同的线程间移动数据库连接,就可能会出现严重的问题。

  在3.3.1版本上,关于在线程间移动数据库连接的限制变得宽松了。 在它及以后的版本中,只要连接没有持有 fcntl() 锁,在线程间移动句柄是安全的。 如果没有未决的事务,并且所有的语句都已执行完毕, 你就可以安全的假定不再持有任何锁。

  在UNIX中,在执行 fork() 系统调用时不应携带已打开的数据库进入子进程。 那样做将会有问题。

此FAQ对您有帮助么?[ | ] | 收藏
 
访问赛贝斯软件(中国)有限公司北京总部官方网站 | 访问IT价格网( Myprice.com.cn )