如何保证线程安全 什么是线程安全,如何保证线程安全


如何保证线程安全 什么是线程安全,如何保证线程安全

文章插图
保证线程安全以是否需要同步手段分类,分为同步方案和无需同步方案 。如下:
1、互斥同步 。
互斥同步是最常见的一种并发正确性保障手段 。同步是指在多线程并发访问共享数据时,保证共享数据在同一时刻只被一个线程使用(同一时刻,只有一个线程在操作共享数据) 。而互斥是实现同步的一种手段,临界区、互斥量和信号量都是主要的互斥实现方式 。因此 , 在这4个字里面,互斥是因,同步是果;互斥是方法,同步是目的 。
【如何保证线程安全 什么是线程安全,如何保证线程安全】2、非阻塞同步 。
随着硬件指令集的发展,出现了基于冲突检测的乐观并发策略,通俗地说,就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了;如果共享数据有争用 , 产生了冲突,那就再采用其他的补偿措施 。(最常见的补偿错误就是不断地重试,直到成功为止) , 这种乐观的并发策略的许多实现都不需要把线程挂起,因此这种同步操作称为非阻塞同步 。
3、无需同步方案 。
要保证线程安全,并不是一定就要进行同步,两者没有因果关系 。同步只是保证共享数据争用时的正确性的手段,如果一个方法本来就不涉及共享数据 , 那它自然就无需任何同步操作去保证正确性,因此会有一些代码天生就是线程安全的 。