一个进程中的所有线程共享同一个地址空间和诸如打开的文件之类的其他资源,因此,一个线程对资源的任何修改都会影响同一个进程中其他线程的环境。这就需要各种线程活动进行同步,以便它们互不干扰且不破坏数据结构。例如,两个线程都试图往一个双链表中增加一个元素,则可能会丢失一个元素或者会使链表畸形,这就需要互斥访问链表。另外,线程之间也会有合作类的同步需求。为使系统的多线程能有条不紊地运行,操作系统提供了用于线程同步和通信的机制,如互斥锁、条件变量、计数信号量等。