Summary:
感性的总结一下多线程中的几个基本概念(容易混淆的概念)。
谈到多线程,一般人多少有点害怕,不过,在这个多核多线程的年代,甚至众核的年代,如果不能掌握一些并行多线程等相关的技术,那就说不过去了。当谈及多线程时,最基本也是经常会遇到的几个概念就是数据竞争(竞争条件)、同步、并发和并发控制、死锁(加锁)等。下面对其简要的分析,由于只是一个感性的分析,在此就不举例了。
首先说明的是,多线程的这些概念其实很多都是很普遍的概念,不仅仅存在于多线程编程中,下面只分析在多线程中的具体含义。
数据竞争(Data Race):
所谓的数据竞争,很容易理解,多个线程同时访问同一数据导致冲突(数据不正确)就产生了数据竞争。其中,“访问”包括读和写操作,所以自然,数据竞争就包括了读写竞争、写写竞争,有人会问,为何没有读读竞争,这是显然的了,同时读不会产生错误的结果。
如果需要专业一点的 说法,参考http://hi.baidu.com/baituxp/blog/item/6daa5f3770895bcba3cc2b85.html有:
Data race occurs when two conficting accesses to one share