該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓
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的計數器,描述了乙個臨界資源當前的訪問狀態,所有執行流在訪...