Middle — Middle+
Чӣ гуна иҷро кардани ҳамоҳангсозии унсурҳои рӯйхати пайвастшуда барои таъмини бехатарии ҷараёнҳо?
sobes.tech AI
Ҷавоб аз AI
Барои таъмини бехатарии ҷараён дар кор бо рӯйхати пайваст дар Go, бояд дастрасиро ба унсурҳои он ҳамоҳангсозӣ кард, то ҳолати рақобат пешгирӣ шавад.
Равишҳои асосӣ:
- Истифодаи mutex (
sync.Mutexёsync.RWMutex) барои бастани амалиётҳои хондан ва навиштан. - Барои баланд бардоштани суръат, метавон структураҳои мураккабтар, масалан, алгоритмҳои бе баст, истифода бурд, аммо ин душвор аст.
Масали бо истифода аз sync.Mutex:
import "sync"
type Node struct {
value int
next *Node
}
type LinkedList struct {
head *Node
mu sync.Mutex
}
func (l *LinkedList) Add(value int) {
l.mu.Lock()
defer l.mu.Unlock()
newNode := &Node{value: value}
if l.head == nil {
l.head = newNode
return
}
current := l.head
for current.next != nil {
current = current.next
}
current.next = newNode
}
func (l *LinkedList) GetAll() []int {
l.mu.Lock()
defer l.mu.Unlock()
var values []int
current := l.head
for current != nil {
values = append(values, current.value)
current = current.next
}
return values
}
Инчунин, ҳамаи амалиётҳое, ки рӯйхати тағир медиҳад ё мехонад, бо mutex муҳофизат шудаанд, ки боиси пешгирии муноқишаҳои дастрасӣ дар як вақт мешаванд.