GO实现无锁队列 在使用Go进行多线程开发时,通常通过给队列加锁的方式避免并发读写带来的数据丢失或重复读取等问题,但在高并发条件下,加锁带来的性能降低也是必然的,因此希望通过实现lock-free queue 的算法实现无锁队列,提高程序性能。
通过lock-free queue ,实现无锁队列,进而提升Go程序性能。
随着并发数越高,无锁队列的执行效率越高。
详细方案:
引用atomic包,实现lock-free queue 算法(Compare and swap),实现无锁队列:
理解CAS算法的含义,大致为:
当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,
而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。