先吐槽一下libmysqlclient
API的設計, 多個線程同時去connect
竟然會core掉. 後來Google了一番, 才發現mysql_real_connect
不是線程安全的, 須要一些額外的處理. 具體就是:mysql
mysql_library_init
, 在整個程序生命週期中只須要調用一次connect
的時候, 而後以此調用mysql_init
, mysql_thread_init
和mysql_real_connect
mysql_close
和mysql_thread_end
mysql_library_end
PS: 關於第4點, 我沒處理, 無非就是會內存泄漏. 關鍵我找不到C++的方式能夠在main函數退出以前自動調用mysql_library_end
. 太操蛋了.sql