Creating a synchronized list in golang

huangapple go评论89阅读模式
英文:

Creating a synchronized list in golang

问题

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

英文:

Firstly, forgive me if this is a stupid question.
I would like to create a generic synchronised list (like in Java) for reuse in my Go projects.
I found the source of Go's linked list and I was wondering would it be sufficient to simply add mutex locks to the list manipulation functions?

答案1

得分: 4

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

最好是使用互斥锁来保护整个数据结构,而不是实现自己的并发链表。

英文:

If you're going to make a concurrent-safe container, you need to protect all access to the data, not just writes. Inspecting an element, or even calling Len() without synchronizing the read could return invalid or corrupt data.

It's probably easier to protect the entire data structure with a mutex, rather than implement your own concurrent linked list.

huangapple
  • 本文由 发表于 2014年12月23日 03:15:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/27609032.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定