執行緒安全讀取mysql 多執行緒讀寫mysql資料庫

2021-10-18 20:37:13 字數 1206 閱讀 6087

該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓

unsigned int __stdcall scan(pvoid pm)

char ip[20];

strcpy(ip, (char*)pm);

mysql mysql;

mysql_res* result;

//初始化mysql控制代碼

mysql_init(&mysql);

//連線mysql資料庫

if(!mysql_real_connect(&mysql,"localhost","root","123456","mysql",3306,null,0))

printf(mysql_error(&mysql));

printf("\ncannot access to the database!!!\n");

exit(-1);

//插入資料

char query1[100];

char query2[100];

sprintf(query1,"select * from testip where ip = '%s' ",ip);

if(mysql_query(&mysql,query1)) //執行插入語句

//出錯

result=mysql_store_result(&mysql);

mysql_free_result(result); //釋放查詢結果,如果不釋放,下次呼叫mysql_query()會失敗

else

//0,語句成功執行

result = mysql_store_result(&mysql);

if(mysql_num_rows(result))

//1,表中已有資料

mysql_free_result(result);

printf("%s 已有資料,無需插入! \n",ip);

else

//0,表中無此資料,需插入

mysql_free_result(result);

sprintf(query2,"insert into testip values ('%s') ",ip);

if(mysql_query(&mysql,query2)!=0)

printf("%s insert data error\n",ip);

else

printf("%s insert data success\n",ip);

多執行緒 執行緒安全

原因 當多個執行緒同時共享,同乙個全域性變數或靜態變數。做寫的操作時,可能發生資料衝突問題,也就是執行緒安全問題。但是做讀操作是不會發生資料衝突問題。解決方案 方式一 內建鎖synchronized synchronized保證執行緒原子性,當執行緒進入方法的時候,自動獲取鎖,一旦鎖被其它執行緒獲取...

多執行緒 執行緒安全

public class unsafethread t.start while thread.activecount 1 system.out.println sum 1 從主記憶體中講sum變數複製到執行緒的工作記憶體 2 在工作記憶體中修改變數 1操作 3 將sum變數從執行緒的工作記憶體寫回到...

多執行緒 執行緒安全

執行緒安全 多個執行流對臨界資源的爭搶訪問,但是不會出現資料二義性 執行緒安全的實現 同步 通過條件判斷保證對臨界資源訪問的合理性 互斥 通過同一時間對臨界資源訪問的唯一性實現臨界資源訪問的安全性 互斥鎖實現的原理 互斥鎖本身是乙個只有0 1的計數器,描述了乙個臨界資源當前的訪問狀態,所有執行流在訪...