ODBC 多线程并行执行SQLExecute

屠龙宝刀一秒刷爆 2017-01-11 04:01:25
每个线程创建一个连接,然后执行 SQLExecute,但是会阻塞在SQLExecute。
比如我单线程执行SQLExecute需要1秒
开两个线程执行SQLExecute,那线程1执行1s,线程2由于开始稍微晚一些,SQLExecute执行时间为等待线程1的1秒加上自己的1秒,总共2秒。
如果多线程循环执行SQLExecute,每次都被阻塞,并没有起到多线程提高效率的目的。

查看MSDN 的 ODBC API
SQLExecute executes a statement prepared by SQLPrepare. After the application processes or discards the results from a call to SQLExecute, the application can call SQLExecute again with new parameter values.

附上链接:
https://msdn.microsoft.com/en-us/library/ms713584(v=vs.85).aspx#Comments

是说一个应用程序在SQLExecute返回后,才能执行新的SQLExecute函数。

有没有办法多线程并行执行SQLExecute函数?
...全文
385 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
多进程是可以的并行的。
  • 打赏
  • 举报
回复
感谢。 发现是odbc配置文件 odbcinst.ini的问题。 其中有一条属性是 Threading = 0/1/2/3,不附加该内容的话,默认被设置为3,在驱动层面是串行执行的。 添加Threading = 1 问题解决。
赵4老师 2017-01-11
  • 打赏
  • 举报
回复
试试使用多进程。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧