რა განსხვავებაა კონკურენციასა და პარალელურობას შორის?
sobes.tech AI
პასუხი AI-სგან
მოწინააღმდეგეობა — ეს არის სისტემის უნარი მართოს რამდენიმე დავალება, რომლებიც ნაწილობრივ ერთდროულად შეიძლება შესრულდეს, მათ შორის გადართვით. პარალელიზმი — ეს არის ამ დავალებების ერთდროულად შესრულება სხვადასხვა პროცესორის ბირთვებზე.
საერთოდ, მოწინააღმდეგეობა ეხება სამუშაო ორგანიზებას, რათა რამდენიმე დავალებამ შეძლოს პროგრესი, ხოლო პარალელიზმი — ამ დავალებების ერთდროულად შესრულებას.
Go-ში მოწინააღმდეგეობა მიღწეულია გორუტინებისა და არხების საშუალებით, ხოლო პარალელიზმი — როდესაც ეს გორუტინები რეალურად ერთდროულად მუშაობენ სხვადასხვა ბირთვზე.
მაგალითი მოწინააღმდეგეობისა, Go-ში:
package main
import (
"fmt"
"time"
)
func task(name string) {
for i := 0; i < 3; i++ {
fmt.Println(name, "საფეხური", i)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go task("A")
go task("B")
time.Sleep(500 * time.Millisecond)
}
აქ, დავალებები "A" და "B" მუშაობენ კონკურენტულად, ცვლიან ერთმანეთს, და თუ ისინი მუშაობენ მრავალბირთვიან პროცესორზე, შეიძლება შესრულდნენ პარალელურად.