Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2023, 17:50   #1
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию Mysql & C Connector (libmysql.dll)

Приветствую. Помогите разобраться с libmysql.dll.
Цель: двум windows потокам организовать индивидуальные соединения с mysql.

Последовательность функций в каждом потоке:

Код:
  1. mysql_init
  2. mysql_real_connect
  3. mysql_query
  4. ...
  5. mysql_thread_end
  6. mysql_close
Вопросы:
  1. Нужно ли синхронизировать вызов mysql_init (через mutex) между двумя потоками?
  2. Нужен ли вызов mysql_thread_end?
  3. Если есть необходимость подключиться к другому серверу в потоке, можно ли начать с mysql_real_connect используя данные предыдущего mysql_init?
  4. Может имеется ХОРОШИЙ мануал с ПРИМЕРАМИ по C Connector, многопоточности?
mikado3333 вне форума Ответить с цитированием
Старый 02.05.2023, 20:17   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

1) mysql_init можно вызвать один раз перед созданием всех потоков из главного (создающего).
2) нужен. Читем подробнее про mysql_init
3) mysql_init инициализирует данные в библиотеке. Нет необходимости вызывать её повторно в каждом потоке. А вот если вам необходимо, тогда можно создать в каждом потоке отдельное соединение или работать c одним общим (тогда может потребоваться синхронизация потоков).
4) А чем не устраивает официальная документация по API mysql?
macomics вне форума Ответить с цитированием
Старый 02.05.2023, 21:04   #3
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
А вот если вам необходимо, тогда можно создать в каждом потоке отдельное соединение
если я правильно понял:

первый поток
Код:
  1. mysql_init
  2. mysql_real_connect(host1)
  3. mysql_query(host1)
  4. ...
  5. mysql_thread_end
  6. mysql_close(host1)
второй поток
Код:
  1. mysql_real_connect(host1)
  2. mysql_real_connect(host2)
  3. mysql_query(host1)
  4. mysql_query(host2)
  5. ...(host1)
  6. ...(host2)
  7. mysql_thread_end
  8. mysql_close(host1)
  9. mysql_close(host2)
mysql_thread_end во втором потоке вызывается один раз, т.к. просто освобождает память выделенную при mysql_real_connect(host1), mysql_real_connect(host2)?
mikado3333 вне форума Ответить с цитированием
Старый 03.05.2023, 15:41   #4
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию

https://stackoverflow.com/questions/...s-concurrently
mikado3333 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Драйвер MySQL Connector ODBC 5.1 Tabor678 БД в Delphi 8 25.02.2015 18:43
Mysql+Delphi 2010 Использую libmysql.dll + mysql.pas не могу инф сохранить в базу kGpROGER БД в Delphi 7 30.12.2010 18:27
MySQL Connector ODBC TaTT DoGG Общие вопросы .NET 3 17.02.2010 20:25
Как установить mysql-connector/j Genady Java Базы данных (JDBC, JPA, Hibernate) 1 27.06.2009 13:25
MySQL connector и VB.NET hyperworker Общие вопросы .NET 5 15.03.2009 14:42