6.2.4 破坏进程数据
线程可以很轻易地破坏进程的数据。如果没有同步,线程对相同数据片的写入访问可以导致数据竞争,对于进程则不会这样。每个进程有它自己的数据,而且除非设置特殊通信,否则其他进程不能够访问到它们。进程的隔离的地址空间保护数据不受其他进程无意的破坏。线程共享相同地址空间的事实使得若不使用同步,则数据便会面临被破坏的风险。例如,假定一个进程中包含3个线程:Thread A、Thread B和Thread C。Thread A和Thread B更新某个计数器,Thread C读取每个被更新的值,并将这个值用于计算中。Thread A和Thread B都试图并发地写入到内存的某个位置中,在Thread C读取之前,Thread B重写了Thread A写入的数据。应当使用同步来确保在Thread C读取数据之前,计数器不会被更新。
注意:
线程间和进程间的同步问题将会在第7章中讨论。