我通过多个线程调用一个大方法,并且使用全局字段递增周围的synclock来防止死锁和竞争条件非常困难。该方法调用其他方法,我想知道线程是否会在链接的其他方法中竞争(?)。
我的想法是,如果我实例化一个类,在构造函数中启动线程,然后在第一个方法中将所有方法调用实例化为对象及其方法,则应避免竞争条件。
实例化的类也拥有它的方法,所以我相信实例化类中的方法和子方法永远不会相互竞争。因此,我相信我可以多次实例化该类,而不是使用线程 - 让GC赶上(可能效率低下?)。
答案 0 :(得分:1)
也许这会更好地代替SyncLock:
Interlocked.Increment(myGlobalVariable)
编辑:我不相信你将这些方法放在课堂上的理论将有助于防止数据竞争。定义方法的位置无关紧要,如果他们试图在没有有效同步技术(例如互斥锁)的情况下从不同线程修改相同数据,那么数据竞争是一种明确的可能性。