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/