powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему в потоковой функции не работают функции доступа к базе MySQL
10 сообщений из 10, страница 1 из 1
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38364705
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю в VS2010 дополнительный поток (в main) функцией _beginthreadex(...,&MyFunc,...), а в потоковой функции MyFunc пишу, например, mysql_init(...) и она не выполняется, а если вызову эту функцию в main, то всё проходит. Почему это происходит? Куда копать?
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38364762
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satch,

Приведите полный код. Читайте правила.
Местный серебрянный шар который мы припасли для таких случаев говорит что у вас не синхронизированы вызовы mysql_xxx функций в разных потоках, главном и созданном.
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38364787
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_satch,

Приведите полный код. Читайте правила.
Местный серебрянный шар который мы припасли для таких случаев говорит что у вас не синхронизированы вызовы mysql_xxx функций в разных потоках, главном и созданном.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include <mysql.h>

MYSQL mysql;

unsigned __stdcall MyFunc(void* arg) {
	if (!mysql_init (&mysql)) 
		abort(); 
}

int main(int argc, char* argv[])
{_beginthreadex(NULL, 0, &MyFunc, NULL, 0,&uThreadID);
return 0;
}
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38364815
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satch,

http://dev.mysql.com/doc/refman/5.0/en/mysql-thread-init.html
Попробуйте перенести объявление хендла MYSQL в функцию потока. Если же он (хендл) должен быть в главном, тогда и mysql_init вызывайте в главном потоке.
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38365994
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, ввел всех в заблуждение. Тот код, что выше - работает, а не работает такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <mysql.h>

unsigned __stdcall Thread1(void* arg) {

  MYSQL mysql;	
  if (!mysql_init (&mysql)) abort(); 
...
return 0;
}
unsigned __stdcall Thread2(void* arg) {

  MYSQL mysql;	
  if (!mysql_init (&mysql)) abort(); 

return 0;
}
int main(int argc, char* argv[])
{
...
	_beginthreadex(NULL, 0, &Thread1, NULL, 0,&uThread1ID);
	_beginthreadex(NULL, 0, &Thread2, NULL, 0,&uThread2ID);
...
return 0;
}


Если закоментарю в функции main хотя бы один _beginthreadex, то всё работает, а раскомментарю - болт. Почему?
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38366032
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satch,

Тебе же сказали, надо использовать в потоке
mysql_thread_init()
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38366093
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivsatch,

Тебе же сказали, надо использовать в потоке
mysql_thread_init()
Пробовал, студия выбрасывает исключение: Access violation writing location 0x00000014.
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38366265
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satch,

там же по ссылке
Код: plaintext
1.
2.
3.
4.
if (!mysql_thread_safe()) {
m_strErrorMessage = "Thread Safe OFF: ";
ASSERT(0); // Major problem: libmysqlcompiled ThreadSafe?
}
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38366409
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_satch,

там же по ссылке
Код: plaintext
1.
2.
3.
4.
if (!mysql_thread_safe()) {
m_strErrorMessage = "Thread Safe OFF: ";
ASSERT(0); // Major problem: libmysqlcompiled ThreadSafe?
}


Так mysql_thread_safe() в потоковой функции у меня возвращает 1, что не так?
...
Рейтинг: 0 / 0
Почему в потоковой функции не работают функции доступа к базе MySQL
    #38366439
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satch,

обычно не так в 99% случаев - чтение документации.
http://dev.mysql.com/doc/refman/5.7/en/c-api-threaded-clients.html
Попробуйте вызвать mysql_library_init(...) в main перед стартом потоков.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему в потоковой функции не работают функции доступа к базе MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]