Concurrency 在golang中创建同步列表

Concurrency 在golang中创建同步列表,concurrency,go,Concurrency,Go,首先,如果这是一个愚蠢的问题,请原谅我。 我想创建一个通用的同步列表(如Java),以便在我的Go项目中重用。 我找到了Go的源代码,我想知道仅仅向列表操作函数添加互斥锁是否足够?如果要创建一个并发安全容器,您需要保护对数据的所有访问,而不仅仅是写入。检查元素,甚至在不同步读取的情况下调用Len(),都可能返回无效或损坏的数据 使用互斥锁保护整个数据结构可能比实现自己的并发链表更容易 像这样的线程()表明线程安全列表的预期用途很重要,可以帮助从各种同步方法中进行选择?除了静态大小外,它只是一个同

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

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


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

像这样的线程()表明线程安全列表的预期用途很重要,可以帮助从各种同步方法中进行选择?除了静态大小外,它只是一个同步的FIFO列表。@Not_a_Golfer我不确定我是否可以使用缓冲通道,因为我想删除和搜索列表中的项目。要添加到这一点,缓冲通道或由互斥锁保护的片段也可能满足OP的需要。是的,实际上并不经常需要双链接列表,特别是在各种项目中重复使用的并发版本。@3of3一个由互斥锁保护的片段正是我最初想到的。我认为这个答案最好使用示例代码。