2012-04-13 2 views
0

с использованием libmysqlclient_r.so i.e c соединителем mysql. в соответствии с текущей дугой, в thread1 для соединения1 подготовлена ​​stmt будет создана и кэширована. следующий для нить2 подключение2 кешированный подготовленный stmt будет повторно.Может ли подготовленные заявления делиться между потоками?

после выполнения программа бросает ошибку сегментации в случайном месте.

Примечание: Если я сохраняю только один поток и выполняю его, он никогда не вызывает ошибку сегментации.

Я не не нашел ничего в тузд документации об этом, хотя я выполнил все необходимые действия, как указано в разделе: http://dev.mysql.com/doc/refman/4.1/en/threaded-clients.html

Просьба предложить, если обмен подготовить stmts по теме проблема ??

+0

«Просьба предложить, если обмен подготовить stmts через нить проблема? ?» - Нет. Не могли бы вы добавить код? – user928204

+0

перед отправкой кода, можете ли вы, пожалуйста, дать больше объяснений для вашего ответа как «НЕТ». Пожалуйста, рассмотрите вышеприведенный сценарий - считайте ли вы работоспособным? – user1145280

ответ

1

AFAIK, подготовленные операторы создаются/связаны с контекстом подключения. Прототип функции необходимо подключение в качестве входного параметра, так что вы не можете повторно использовать подготовленное заявление, подготовленное в контексте connection_A в connection_B ...

MYSQL_STMT *mysql_stmt_init(MYSQL *mysql) 
+0

спасибо за ваш ответ, есть ли какой-либо официальный документ по этому сценарию. – user1145280

+1

@ user1145280: Только этот прототип говорит об этом. Аналогичным образом функционируют другие базы данных. Окончательное руководство - это документация API клиента mysql ... – Malkocoglu

+0

Более интересный вопрос: «Можно ли использовать контекст соединения по потокам», на который ответ «да», но только один поток может использовать его за раз ». –

Смежные вопросы