使用内存中的SQLite数据库在C++和C#之间共享数据
Sharing data between C++ and C# using an in-memory SQLite database?
我在一个项目中工作,该项目包含几个C++和一些C#组件。我目前正在开发一个新的C#组件,该组件需要与C++组件共享数据(未来可能会有更多组件访问此组件(。所有组件都在同一进程中运行。我目前的想法是使用内存中的数据库,但我不确定这是否可行。
SQLite很受欢迎,可用于C++和C#项目,并且它具有内存功能。问题是,如果可以从两个组件访问同一个数据库,例如,我可以在C#项目中使用用C++创建的数据库(指针(的句柄吗?
是的,那是可能的。当然,您需要共享一些数据结构和句柄(正如您所说(。这样一来,SQLite就无法检测托管代码和本机代码之间的任何差异。因此,行为上不可能有任何差异。
如果只使用PInvoke或C++/CLI来交换数据结构,可能会更容易。仅仅为了在进程中传递数据而旋转整个SQL数据库似乎是浪费。
可以。sqlite数据库在内存中,但它作为文件驻留在磁盘上。当您关闭数据库连接时,它会被刷新到磁盘上的文件中。因此,您基本上可以在一个组件写入中打开数据库连接,然后关闭连接,以便其他组件可以读取/写入数据库。它与操作文件的方式类似,只是它是在内存中管理的,而不是在磁盘上管理的,所以比文件快一点。但是,如果你的意图是在c++和c#之间进行IPC,还有其他更好的方法。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 构造函数和转换运算符之间的重载解析
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数