近來 多線程 運作一段時間就報2006錯誤。而且一旦出現2006,就再也無法正常查詢資料庫了。懷疑是多線程問題。從網上搜尋了一下,總結方法:
- 使用--with-thread-safe-client編譯終端。
- 如果幾個共用一個MYSQL*,在mysql_query和mysql_store_result之間,不能有其他資料庫動作(查詢、修改、删除等)。為此,需要使用線程鎖。
這個有點麻煩,特别是在判斷各種出錯情況下。
- 多線程程式設計寫法:
在主線程中,調用 mysql_library_init(0, NULL, NULL)、mysql_library_end()。
初始化:mysql_thread_init();MYSQL *mysql = mysql_init(NULL);
關閉:mysql_close(mysql); mysql_thread_end();
具體情況,繼續觀察。
就個人感覺,應該說第二種方法最好。