在golang中创建同步列表

W.K*_*K.S 5 concurrency go

首先,如果这是一个愚蠢的问题,请原谅我。我想创建一个通用的同步列表(如 Java 中的)以便在我的 Go 项目中重用。我找到了 Go链表的来源,我想知道简单地将互斥锁添加到列表操作函数中是否就足够了?

Jim*_*imB 4

如果要创建并发安全容器,则需要保护对数据的所有访问,而不仅仅是写入。检查元素,甚至Len()在不同步读取的情况下调用可能会返回无效或损坏的数据。

使用互斥体保护整个数据结构可能比实现自己的并发链表更容易。