>>А вы пробовали отлаживать треды с помощью gdb? gdb говорит, что у
>>меня приложение в SSL_accept() падает :)))
>
>если стек не порушен - нормально можно отладить. Кстати, если ругается на
>SSL, можно рекомендовать пока отключить его. По крайней мере на время
>отладки.
Да в том то и дело, что SSL ни при чем. Просто насколько я понял gdb не умеет отлаживать многотредовые приложения, вот и выдает, дурилка, что процесс упал на accept(), который просто ждал очередного клиента. А реальная причина в другом треде.>>Проблема скорее всего действительно не в mysql библиотеке, а в mysql документации.
>>Точнее в ее отсутствии.
>
>Там вроде все нормально с документацией. Может быть имеет смысл включить протокол
>передачи , который появился в версии 4.1.x между сервером
>и клиентом (ищи строку "41" в имени опции). Факт, что старый
>протокол точно не умеет работать с двумя паралелльными запросами, а особенно
>с двумя выборками. Но и с новым протоколом тоже не факт,
>что сумеет (он кстати, по умолчанию выключен).
Да новый протокол вроде тоже не умеет (я ковыряюсь в mysql 5.0.27). Обходится это блокировкой мьютекса на момент выполнения кода от mysql_stmt_execute() до mysql_stmt_store_result(), т.е. реально по протоколу перегоняется не более одного запроса одновременно.
>>Если у кого-нибудь есть идеи, где можно посмотреть вразумительную реализацию многотредового клиента,
>>ткните меня туда носом...
>
>Обычно люди делают столько mysql коннектов, сколько потоков, и работают с ними
>без конкуренции в потоках. Опции для потоков нужны при работе с
>библиотекой mysqld, а не с mysqlclient.
Да наверное так и буду делать, лишнее соединение впринципе ресурсов много не жрет. Тем более, что они открываются при загрузке приложения и держатся открытыми постоянно.
Я пытался использовать модель с конкурирующими на одном соединении тредами потому что во первых не разобрался с производительностью, а во вторых хотел упростить процедуру переподключения к серверу БД в случае ошибок и потери коннекта. Сейчас пробую модель в которой каждый "сам за себя", т.е. каждый тред самостоятельно держит собственное подключение. Теоретически это даст прирост производительности, т.к. треды не будут простаивать, ожидая освобождение ресурсов для работы с БД.
А вообще спасибо, я правда уже до всего этого сам дошел, но теперь есть уверенность, что иду в правильном направлении. Может еще какие идеи есть? Выслушаю с благодарностью.