• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql C API在windows下是线程安全的么?该如何解决

mysql 搞代码 7年前 (2018-05-31) 296次浏览 已收录 0个评论

mysql C API在windows下是线程安全的么?
问题场景:

一个程序内有2个以上守护线程,当某条件触发时,调用mysql_query向mysql数据库内插入一个记录,经过试验,发现两个线程同时触发条件向mysql内插入记录时,报错如下:

怀疑是因为两个线程同时向数据库内插入记录造成的冲突。

问题:

1. Windows环境下,mysql_query是线程安全的么? 我使用mysql server 5.5.16,程序启动是就初始化一个数据库连接,调用mysql_real_connect,以后保持长连接不断开,需要插入记录时调用mysql_query

2. 如果不是线程安全的,有什么可靠的解决方案?

3. 搜索了一下那个错误信息,有几个建议是关于mysql服务器配置的,如修改bind-ipaddress,修改skip-name-resolve等,我是在window下安装的mysql,配置文件里貌似就没有这些选项。。。

求指点

——解决方案——————–
当你两个线程同时做插入操作时,会因争抢 MYSQL mysql 而出错,所以你可以在各自的线程中定义单独的mysql变量,在连接数据库。之后执行同时插入等操作就不会有问题了。
——解决方案——————–
显然不是线程安全的。
可以为每个线程创建单独的mysql连接,如楼上所说,创建独立的mysql* 句柄。
这样不至于互相干扰。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql C API在windows下是线程安全的么?该如何解决

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址