რატომ სჭირდება Pthread_cond_wait mutex?
რატომ სჭირდება Pthread_cond_wait mutex?

ვიდეო: რატომ სჭირდება Pthread_cond_wait mutex?

ვიდეო: რატომ სჭირდება Pthread_cond_wait mutex?
ვიდეო: Mutex vs Synchronization 2024, მაისი
Anonim

The მუტექსი გამოიყენება თავად მდგომარეობის ცვლადის დასაცავად. ამიტომ შენ საჭიროება ის დაიკეტა თქვენს წინაშე კეთება ლოდინი. შემდეგ, როდესაც პირობის ცვლადი იქნება სიგნალი ან გადაცემული, ერთი ან მეტი ძაფები მოლოდინში გაიღვიძებს და მუტექსი ისევ ჯადოსნურად დაიკეტება იმ თემისთვის.

ამასთან დაკავშირებით, Pthread_cond_wait განბლოკავს mutex-ს?

The pthread_cond_wait () ფუნქცია ბლოკავს გამოძახების ძაფს მდგომარეობის ცვლადზე cond, და ხსნის ასოცირებული მუტექსი მუტექსი . ზარის თემა უნდა იყოს ჩაკეტილი მუტექსი პირობის ცვლადზე მოლოდინამდე. ფუნქციიდან დაბრუნებისას, მუტექსი ისევ ჩაკეტილია და ეკუთვნის გამოძახების თემას.

შემდგომში ჩნდება კითხვა, რატომ არის საჭირო მუტექსი? ის უზრუნველყოფს, რომ მხოლოდ ერთი ძაფი ახორციელებს კოდის საკვანძო ნაწილს ერთდროულად, რაც თავის მხრივ ზღუდავს მონაცემთა სტრუქტურაზე წვდომას. ის უზრუნველყოფს, რომ ორივე ძაფს ჰქონდეს სრული და სათანადო ხედვა ამ მეხსიერების შესახებ, მიუხედავად CPU-ს ნებისმიერი ხელახალი შეკვეთისა. The მუტექსი აბსოლუტური აუცილებლობაა ერთდროულად პროგრამირების დროს.

ზემოაღნიშნულის გარდა, რატომ სჭირდებათ მდგომარეობის ცვლადებს mutex?

The მუტექსი არის გამოიყენება დასაცავად მდგომარეობის ცვლადი თავად. ამიტომ შენ საჭიროება ის დაიკეტა თქვენს წინაშე კეთება ლოდინი. მაშინ როცა მდგომარეობის ცვლადი არის სიგნალიზაცია ან გადაცემა მოლოდინში მყოფ ერთ ან რამდენიმე ძაფზე ნება გაიღვიძოს და მუტექსი ნება ისევ ჯადოსნურად ჩაკეტილი იყოს ამ თემისთვის.

რატომ გვჭირდება მდგომარეობის ცვლადები?

მდგომარეობის ცვლადები მიეცით საშუალება ძაფების ერთობლიობას დაძინებამდე! შეგიძლიათ ერთი ძაფი ან ყველა ძაფი, რომელიც სძინავს. თუ მხოლოდ ერთ ძაფს გააღვიძებთ, მაშინ ოპერაციული სისტემა გადაწყვეტს, რომელი ძაფი გააღვიძოს.

გირჩევთ: