Open xpzouying opened 4 years ago
首先,定义队列数据结构。其中包括两部分:
type Node struct {
Value int
Next *Node
}
type Queue interface {
Enqueue(value int)
Dequeue() (int, error)
}
定义
定义最简单的FIFO的链表。
type SimpleQueue struct {
Head *Node
Tail *Node
}
其中数据结构包含:
入队
func (q *SimpleQueue) Enqueue(v int) {
node := &Node{Value: v}
q.Tail.Next = node
q.Tail = node
}
出队
func (q *SimpleQueue) Dequeue() (int, error) {
// if empty queue
if q.Head.Next == nil {
return 0, ErrEmptyQueue
}
newHead := q.Head.Next
retVal := newHead.Value
oldHead := q.Head
oldHead.Next = nil
oldHead = nil
q.Head = newHead
return retVal, nil
}
并发安全的队列
最近看了一篇关于并发安全队列的论文,在此记录该笔记。
参考论文