我在做一個(gè)線程池,我想取消一項(xiàng)在任務(wù)隊(duì)列或是正在執(zhí)行的任務(wù),如果這項(xiàng)任務(wù)在我想abort時(shí)已經(jīng)執(zhí)行完了就什么也不要做。
具體的情景時(shí):當(dāng)我想Abort一個(gè)任務(wù)時(shí),如果它在任務(wù)隊(duì)列Queue<Param>中我移除它,可是正當(dāng)我要移除它時(shí),有了空閑的線程,它自己已經(jīng)從任務(wù)隊(duì)列中移除,在線程池中執(zhí)行了,而當(dāng)我想在線程池中(我的一個(gè)哈希儲(chǔ)存了Dictionary<Thread,Param>線程對(duì)象)找到這個(gè)線程實(shí)例并Abort它時(shí),這個(gè)任務(wù)已經(jīng)正常的結(jié)束了,我再Abort這個(gè)線程,此時(shí)這個(gè)空閑線程又引入了新的任務(wù),當(dāng)我真正Abort掉的是一個(gè)另一個(gè)任務(wù)
這里有兩個(gè)非種特殊的情況,怎么避免其發(fā)生,能否給個(gè)簡(jiǎn)單的示例
- 1 回答
- 0 關(guān)注
- 366 瀏覽
添加回答
舉報(bào)
0/150
提交
取消