1
维基百科:理解比赛条件
竞态条件出现在当软件单独的计算机处理或执行的线程依赖于某些共享的状态。
如果我正确地理解了这个,这是否意味着以下事件也是一种竞争条件,尽管共享资源受到保护?
int x; // global
Thread1:
Lock(m);
x=1;
Unlock(m)
Thread2:
Lock(m);
x=2;
Unlock(m);
显然,输出取决于执行顺序。
维基百科:理解比赛条件
竞态条件出现在当软件单独的计算机处理或执行的线程依赖于某些共享的状态。
如果我正确地理解了这个,这是否意味着以下事件也是一种竞争条件,尽管共享资源受到保护?
int x; // global
Thread1:
Lock(m);
x=1;
Unlock(m)
Thread2:
Lock(m);
x=2;
Unlock(m);
显然,输出取决于执行顺序。
你的理解是正确的。这是一个竞争条件,但它不是数据竞赛。差别是微妙的;我试图解释它here。
通常情况下,只有在遇到问题时才会调用某种比赛。这取决于您所需的应用程序和行为。 – Erik 2013-04-09 09:32:17