有四个任务 任务1:登陆验证 任务2:验证成功后从Web服务获取数据 任务3:验证成功后从数据库获取数据 任务4:使用2、3的数据执行一个方法
在解决上述问题中,最早的方法是使用顺序执行1、2、3、4,现在对此做了优化,由于2、3两个任务之间是没有关联的,可以放到不同线程内执行,但是4的执行需要2、3同时完成作为条件,因此,在1执行后,创建两个全局标志位M2,M3,开启三个线程分别执行2、3、4,其中2、3执行完毕后会分别把M2、M3置为true,4的线程一直循环监听M2、M3,当两者都为true时开始执行4的任务。
现在想把这个方法做进一步优化,不希望4一直在询问2、3是否完成了,而是2、3完成了自己通知4。这里想到了使用异步委托BeginInvoke,创建一个4的回调函数,但难点是需要两个任务都执行完毕后才执行这个回调函数。
很自然地,我想到了再一次使用全局变量M2,M3。不过总觉得这种方式不太优雅?是否有更好的解决方案呢?
另外,想请教下这种类型的问题该归纳为那种问题,不太像并发问题吧?
天涯尽头无女友
SMILET
相关分类