竞争条件(Race Condition),理学-计算机科学技术-信息安全-信息系统安全-软件安全-软件漏洞,最初被用来描述一种出现于存在共享内存利用的并行式程序运行过程中的现象,即在某些特定情况下,进程的输出可能依赖于某些事件出现的顺序或时机——而这种顺序或时机又是不受控制的。一般认为,竞争条件的发生条件是:不同进程在没有显式同步的情况下对共享数据进行访问,从而导致了对共享数据单元的“争抢”。竞争条件从概念上可以分为综合竞争条件(general races)和数据竞争条件(data races)。其中,当程序中有多个事件之间存在数据访问冲突、且程序同步机制又未能“确保”各事件的执行顺次时,将会在程序执行中引入综合竞争条件;相对的,当程序中有多个事件同时执行(或潜在可能同时执行)并存在数据访问冲突时,则将会引入数据竞争条件。上述两类竞争条件的潜在安全隐患有一定的区别,如综合竞争条件可能引起非确定性的执行/表示错误,而数据竞争条件则有可能引起非原子性的关键执行/表示错误。