併發鏈接MySQL

先吐槽一下libmysqlclientAPI的設計, 多個線程同時去connect竟然會core掉. 後來Google了一番, 才發現mysql_real_connect不是線程安全的, 須要一些額外的處理. 具體就是:mysql

  • 首先調用一次mysql_library_init, 在整個程序生命週期中只須要調用一次
  • 而後每次connect的時候, 而後以此調用mysql_init, mysql_thread_initmysql_real_connect
  • 鏈接關閉的時候, 以此調用mysql_closemysql_thread_end
  • 最後在程序退出以前調用mysql_library_end

PS: 關於第4點, 我沒處理, 無非就是會內存泄漏. 關鍵我找不到C++的方式能夠在main函數退出以前自動調用mysql_library_end. 太操蛋了.sql

相關文章
相關標籤/搜索