3 回答

TA貢獻1712條經驗 獲得超3個贊
你參數是通過指針的方法送進去的?然后結果每個線程要讀數據的時候數據已經不是送入時候的數據了嗎
送線程參數的時候,為每個線程分配一個新的空間來保存這個“參數”。
例如你原來是
int a = 10;
_beginthreadex(0, 0, ThreadFunc, &a, 0, 0);
a = 20;
_beginthreadex(0, 0, ThreadFunc, &a, 0, 0);
現在要
int a = 10;
int *p = new int;
*p = a;
_beginthreadex(0, 0, ThreadFunc, p, 0, 0);
p = new int;
a = 20;
*p = a;
_beginthreadex(0, 0, ThreadFunc, p, 0, 0);
記住線程函數退出前要delete掉這個參數p

TA貢獻1856條經驗 獲得超17個贊
這個方法A是否可以做到線程安全?即互不干擾執行?
否則加鎖,感覺起不到并發的作用。
另外,如果這個方法的確無法做到線程安全,建議也只是臨界區加鎖,即存在沖突的那一段代碼加鎖,否則影響效率。

TA貢獻2039條經驗 獲得超8個贊
沒聽懂你要怎么輸出,給你創建臨界區的函數:
CRITICAL_SECTION m_csList;
InitializeCriticalSection(&m_csList);
EnterCriticalSection(&m_csList);
LeaveCriticalSection(&m_csList);
DeleteCriticalSection(&m_csList);
- 3 回答
- 0 關注
- 121 瀏覽
添加回答
舉報