mysql_real_connect 线程安全问题
来源:互联网 发布:php博客系统源码 编辑:程序博客网 时间:2024/06/14 13:25
1. mysql_init()函数在第一次初始化的时候,不是线程安全的,但是之后是线程安全的
所以,如果需要用mysql c api实现线程安全的并发短连接的话,可以如下实现:
void *run(void * data){ long success_count = 0; long fail_count = 0; struct Param *pa = (struct Param*) data; const char * hostname = pa->hostname; const char * username = pa->username; const char * password = pa->password; unsigned int port = pa->port; const char * dbname = pa->dbname; //第一次mysql_init()的时候,采用锁 pthread_mutex_lock(&work_mutex); MYSQL * conn = mysql_init(NULL); pthread_mutex_unlock(&work_mutex); while(!flag){ if(init_connect(conn,hostname,username,password,dbname,port) == 0){ fail_count ++; fprintf(stderr, "Failed to connect to database: Error: %s\n",mysql_error(conn)); }else{ success_count ++; mysql_close(conn); conn = mysql_init(NULL);//之后就不需要了 } } pthread_mutex_lock(&work_mutex); total_success_count = total_success_count + success_count; total_fail_count = total_fail_count + fail_count; end_thread ++; pthread_mutex_unlock(&work_mutex);}
编译的时候,带上-lmysqlclient_r 参数
- mysql_real_connect 线程安全问题
- mysql的多线程安全问题:在mysql_real_connect时出现段错误。
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 线程安全问题
- 不是走上蜕变的道路,就是死在迷茫的途中
- Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)
- 获取表单控件原始(初始)值
- 关于RegQueryValueEx两个小问题
- 黑马程序员_Java中的数组基础
- mysql_real_connect 线程安全问题
- 马尔科夫链简介
- .NET Framework各版本操作系统支持
- 网页开发的6种在线调试环境
- hdu 1042 N!(高精度乘法 + 缩进)
- 卡巴斯基安全部队2013 卡巴斯基正式版 送一年使用序列号
- shell脚本学习总结
- sizeof VS strlen
- Android 设置获取屏幕宽度(备忘)