add download action for sync

This commit is contained in:
tickstep
2022-06-01 21:55:03 +08:00
parent 437c2e31b9
commit f2bcc977cc
16 changed files with 1287 additions and 94 deletions
+22 -1
View File
@@ -1,6 +1,12 @@
package collection
import "sync"
import (
"sync"
)
type QueueItem interface {
HashCode() string
}
type Queue struct {
queueList []interface{}
@@ -21,6 +27,21 @@ func (q *Queue) Push(item interface{}) {
q.queueList = append(q.queueList, item)
}
func (q *Queue) PushUnique(item interface{}) {
q.mutex.Lock()
defer q.mutex.Unlock()
if q.queueList == nil {
q.queueList = []interface{}{}
} else {
for _, qItem := range q.queueList {
if item.(QueueItem).HashCode() == qItem.(QueueItem).HashCode() {
return
}
}
}
q.queueList = append(q.queueList, item)
}
func (q *Queue) Pop() interface{} {
q.mutex.Lock()
defer q.mutex.Unlock()