Проблема многопоточного соединения Informix C++ Client SDKC++

Программы на C++. Форум разработчиков
Anonymous
Проблема многопоточного соединения Informix C++ Client SDK

Сообщение Anonymous »

Я разрабатываю многопоточное приложение, которое должно подключаться к базе данных Informix.
Я работаю с библиотеками CSDK 4.50 и C++.
Я' Возникли проблемы с подключением. Я не нашел способа инициализировать отдельное соединение для каждого потока.
Вот простой фрагмент кода, позволяющий воспроизвести мои проблемы:

Код: Выделить всё

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]

Вернуться в «C++»