jQuery имеет набор плагинов, которые расширяют базовую функциональность. Существует этот плагин для легких пространств имен.
Как сопровождающий довольно большого приложения на C, которое выполняет вызовы MySQL из нескольких потоков, я могу сказать, что у меня не было проблем с простым установлением нового соединения в каждом потоке. Некоторые предостережения, с которыми я столкнулся:
libmysqlclient_r
. mysql_library_init ()
( один раз из main ()
). Прочтите документацию об использовании в многопоточных средах, чтобы понять, почему это необходимо. MYSQL
, используя mysql_init ()
в каждом потоке. Это имеет побочный эффект вызова mysql_thread_init ()
для вас. mysql_real_connect ()
, как обычно, внутри каждого потока, с его зависящей от потока структурой MYSQL. mysql_thread_end ()
в конце каждого потока (и mysql_library_end ()
в конце main ()
). В любом случае это хорошая практика. В принципе, не делитесь структурами MYSQL
или чем-либо, созданным специально для этой структуры (например, MYSQL_STMT
s), и все будет работать так, как вы ожидаете.
Мне кажется, это меньше работы, чем создание пула подключений.
Я захочу использовать mysql_thread_end ()
в конце каждого потока (и mysql_library_end ()
в конце main ()
). В любом случае это хорошая практика.
По сути, не делитесь структурами MYSQL
или чем-либо, созданным специально для этой структуры (например, MYSQL_STMT
s), и все будет работать так, как вы ожидаете.
Мне кажется, это меньше работы, чем создание пула подключений.
я захочу использовать mysql_thread_end ()
в конце каждого потока (и mysql_library_end ()
в конце main ()
). В любом случае это хорошая практика.
В принципе, не делитесь структурами MYSQL
или чем-либо, созданным специально для этой структуры (например, MYSQL_STMT
s), и все будет работать так, как вы ожидаете.
Мне кажется, это меньше работы, чем создание пула подключений.
Вы можете создать пул соединений. Каждый поток, которому требуется соединение, может запросить бесплатное соединение из пула. Если соединение недоступно, вы либо блокируете, либо увеличиваете пул, добавляя к нему новое соединение.
Здесь есть статья , описывающая плюсы и минусы пула соединений (хотя она основана на java. )
Edit: Вот вопрос / ответ SO о пулах соединений в C
Edit2: Вот ссылка на образец Connection Pool для MySQL , написанный на C ++. (вам, вероятно, следует игнорировать операторы goto, когда вы реализуете свои собственные.)
Из документации mySQL мне кажется очевидным, что любую конкретную структуру MYSQL можно без труда использовать в потоке - используя ту же структуру MYSQL в разных потоках одновременно явно даст вам крайне непредсказуемые результаты, поскольку состояние хранится в соединении MYSQL.
Таким образом, либо создайте соединение для каждого потока, либо используйте пул соединений, как предложено выше, и защитите доступ к этому пулу (т. е. зарезервировав или освободив соединение) с помощью какого-то мьютекса.
It states that mysql_real_connect() is not thread safe by default. The client library needs to be compiled for threaded access.