多線程操作同一變量

        最近做的項目需要上傳數據給服務器,爲防止因網絡延遲導致服務器收到數據重複,給每條數據加一個批次號batchId由服務器判斷,批次號由當前時間年月日加一個計數器組成,例如2018061300001,計數器iCount累加,每天0點清零。因爲發送數據的地方很多,都是線程操作,本人技術有限,所以選擇了最簡單的WaitForSingleObject(mMutex,INFINITE)來解決變量互斥問題。

先定義全程變量 

HANDLE mMutex ;

程序啓動時候初始化mMutex 。

mMutex =CreateMutex(NULL, FALSE, NULL);

線程裏操作變量之前鎖定

UINT      ThreadSendAlarmInfomation (LPVOID lpParam)
{

	WaitForSingleObject(mMutex ,INFINITE);
	iCount++;
	ReleaseMutex(mMutex );
        CStringA currentTime,sbatchId;
	CTime t=CTime::GetCurrentTime(); 
	sbatchId.Format(_T("%s%05d"),t.Format("%Y%m%d"),iCount);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章