多线程情况下,
mysql_init会设置线程的私有数据,如果不注意,则会在mysql_real_connect时出现段错误。
错误如下:
void* func(void* arg)
{
MYSQL* mysql = (MYSQL *)arg;
mysql_real_connect(mysql, “127.0.0.1″, “root”, “123456″, “chen”, 1234, NULL, 0);
mysql_close(mysql);
return (void *)0;
}
int main()
{
MYSQL mysql;
if (NULL == mysql_init(&mysql))
{
return -1;
}
pthread_t thread;
pthread_create(&thread, NULL, func, &mysql);
pthread_join(thread, NULL);
return 0;
}