Си MYSQL API в потоках под Linux
http://dev.mysql.com/doc/refman/5.0/en/threaded-clients.html, здесь написано, что если использовать одно подключение к mysql в потоках, нужно их блокировать при выполнении mysql_query. Но в таком случае теряется весь смысл многопоточности, т.к. запросы могут выполнятся относительно долго, и потоки большую часть времени будут простаивать в ожидании. Но в документации ничего не сказано, что нужно, чтобы использовать отдельное подключение на поток, можно ли будет обойтись без блокировок. Может быть кто-то работал с этим API, подскажите кто что сможет. Мне важно сделать потоки максимально независимыми друг от друга.
Можно ли решить проблему, использовав UnixODBC?
P.S. Работаю в linux CentOS 5.5, версия mysql 5.1
Добрый день, пишу программу под linux. Программа многопоточная, каждый поток делает запросы MYSQL серверу. Почитал форумы и документацию по API и понял что не так просто использовать MYSQL в потоках. Вот описание API
Можно ли решить проблему, использовав UnixODBC?
P.S. Работаю в linux CentOS 5.5, версия mysql 5.1
Цитата: o_serg
Вот описание API http://dev.mysql.com/doc/refman/5.0/en/threaded-clients.html, здесь написано, что если использовать одно подключение к mysql в потоках, нужно их блокировать при выполнении mysql_query.
Что мешает использовать для каждого потока свое подключение? Например, таким образом работают веб-сервера.
Цитата: hardcase
Что мешает использовать для каждого потока свое подключение? Например, таким образом работают веб-сервера.
Я как раз это и хотел уточнить, нигде толком не написано нужно ли синхронизировать потоки если соединения будут разные. Нужно ли в таком случае использовать mysql_thread_init(),? Есть ли еще особенности?
Цитата: o_serg
Я как раз это и хотел уточнить, нигде толком не написано нужно ли синхронизировать потоки если соединения будут разные. Нужно ли в таком случае использовать mysql_thread_init(),? Есть ли еще особенности?
Документацию на mysql_thread_init пробовали читать?
Среди прочего там написано, что она вызывается при mysql_connect.