有四個(gè)任務(wù) 任務(wù)1:登陸驗(yàn)證 任務(wù)2:驗(yàn)證成功后從Web服務(wù)獲取數(shù)據(jù) 任務(wù)3:驗(yàn)證成功后從數(shù)據(jù)庫獲取數(shù)據(jù) 任務(wù)4:使用2、3的數(shù)據(jù)執(zhí)行一個(gè)方法 在解決上述問題中,最早的方法是使用順序執(zhí)行1、2、3、4,現(xiàn)在對(duì)此做了優(yōu)化,由于2、3兩個(gè)任務(wù)之間是沒有關(guān)聯(lián)的,可以放到不同線程內(nèi)執(zhí)行,但是4的執(zhí)行需要2、3同時(shí)完成作為條件,因此,在1執(zhí)行后,創(chuàng)建兩個(gè)全局標(biāo)志位M2,M3,開啟三個(gè)線程分別執(zhí)行2、3、4,其中2、3執(zhí)行完畢后會(huì)分別把M2、M3置為true,4的線程一直循環(huán)監(jiān)聽M2、M3,當(dāng)兩者都為true時(shí)開始執(zhí)行4的任務(wù)?,F(xiàn)在想把這個(gè)方法做進(jìn)一步優(yōu)化,不希望4一直在詢問2、3是否完成了,而是2、3完成了自己通知4。這里想到了使用異步委托BeginInvoke,創(chuàng)建一個(gè)4的回調(diào)函數(shù),但難點(diǎn)是需要兩個(gè)任務(wù)都執(zhí)行完畢后才執(zhí)行這個(gè)回調(diào)函數(shù)。很自然地,我想到了再一次使用全局變量M2,M3。不過總覺得這種方式不太優(yōu)雅?是否有更好的解決方案呢?另外,想請(qǐng)教下這種類型的問題該歸納為那種問題,不太像并發(fā)問題吧?
- 2 回答
- 0 關(guān)注
- 739 瀏覽
添加回答
舉報(bào)
0/150
提交
取消