我一直在使用 ADO/ODBC 编写用于数据库访问的多线程 DLL,以便与旧版应用程序一起使用。我需要为每个线程保留多个数据库连接,因此我将每个连接的 ADO 对象放在一个对象中,并考虑将它们的数组保存在自定义 threadInfo 对象中。显然,向量在这里会更好——我需要在旅途中删除/重新排列对象,而向量会简化这一点。问题是,我为每个线程分配一个堆以避免堆争用和其他东西,并从那里分配我所有的内存。
所以我的问题是:如何使向量从特定于线程的堆中分配?(或者它会在内部知道从与其包装类相同的堆中分配内存 - 听起来不太可能,但我不是 C++ 人)我搜索了一下,看起来我可能需要编写一个分配器或其他东西 -这看起来像是我不想要的很多工作。还有其他方法吗?我听说 vector 对它里面的所有东西都使用了placement-new,那么重载 operator new 可以在其中工作吗?
我对 C++ 内部知识的匮乏无济于事,因为我主要是一名 C 程序员(即使是这样 - 相对而言)。我很可能在某处遗漏了一些基本的东西。如果没有更容易的事情出现 - 我可能会去做阵列的事情,但希望它不会变成那样。
我正在使用 MS-VC++ 6.0(嘿,笑起来很粗鲁!:-P)。
任何/所有帮助将不胜感激。