我在使用OpenMP并行化的c ++中有一个for循环。在循环中,我正在访问一个sql server数据库。我被告知,如果我在线程之间共享相同的ODBC驱动程序,则数据访问将不是并行的。如果我为每次迭代定义不同的驱动程序,那将非常耗时。(?) 有没有办法让不同的线程以安全的并行方式访问相同的数据?
PS:我不是在写数据库,只是从中读取。
答案 0 :(得分:0)
有人告诉我,如果我在线程之间共享相同的ODBC驱动程序,那么数据访问就不会是并行的。
你确定你已经说出了这个吗?
关于多线程有很多问题,但是对于大多数ODBC驱动程序,您可以使用每线程连接模型来并行读取。因此,每次启动线程时都要连接(并在线程关闭时关闭)。 更好的模式将是连接池的使用。