sqlite3 Ruby gem线程安全吗?我找不到任何文档可以这么说。

在我的实验中,从多个Ruby线程访问数据库最终导致以下错误:

/Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:84: [BUG] Bus Error

有什么我想念的吗?如果没有,是否可以使用另一个线程安全的软件包?

编辑:在Mac OS 10.5上使用SQLite3.4。

最佳答案

它很可能取决于您使用的sqlite3库。可以在打开或关闭线程安全的情况下进行编译。 sqlite3_threadsafe()函数会告诉您,尽管我怀疑Ruby绑定(bind)中没有公开API。

以下C程序将为您测试

#include <sqlite3.h>
#include <stdio.h>

int main()
{
    printf("Threadsafe: %d\n", sqlite3_threadsafe());
}

用它编译
gcc -o test test.c -lsqlite3

如果它输出一个非零数字,则它应该是线程安全的。

关于ruby - Ruby 1.8.6,SQLite3线程安全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1794879/

10-11 06:24
查看更多