Я работаю с библиотеками CSDK 4.50 и C++.
Я' Возникли проблемы с подключением. Я не нашел способа инициализировать отдельное соединение для каждого потока.
Вот простой фрагмент кода, позволяющий воспроизвести мои проблемы:
Код: Выделить всё
#include
int main()
{
const constexpr int nthreads = 10;
std::thread t[nthreads];
for (int i = 0; i < nthreads; ++i) {
t[i] = std::thread(printArt, i);
}
for (int i = 0; i < nthreads; ++i) {
t[i].join();
}
return 0;
}
void printArt(int i)
{
ITDBInfo dbinfo;
dbinfo.SetDatabase("eda");
ITConnection conn;
conn.Open(dbinfo);
if (conn.Error()) {
return;
}
conn.SetTransaction(ITConnection::Begin);
ITCursor cursor(conn);
if (!cursor.Prepare("select first 1 * from a_table;")) {
conn.SetTransaction(ITConnection::ABORT);
return;
}
if (!cursor.Open()) {
conn.SetTransaction(ITConnection::ABORT);
return;
}
ITRow* row = nullptr;
while ((row = cursor.NextRow()) != nullptr) {
string col0 = row->Column(0)->Printable().Data();
string col1 = row->Column(1)->Printable().Data();
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78667272/informix-c-client-sdk-multi-thread-connection-issue[/url]