کتابخانه‌ی استاندارد · زمان و همروندی

زمینه ctx

زمینه برای لغو کار و مهلت، که از کار اصلی به کارهای فرعی می‌رسد.

واردسازی زمینه
در این صفحه
  1. گونه‌ها
  2. روال‌ها

زمینه به کارهای طولانی می‌گوید کی باید دست بکشند: یا کسی آن را لغو کرده، یا مهلتش تمام شده. زمینه‌ها درخت می‌سازند: از پس زمینه شروع می‌کنید و هر بار با با لغو، با مهلت یا با موعد فرزند تازه‌ای می‌سازید.

لغو یک زمینه همه‌ی فرزندانش را هم تمام می‌کند، ولی پدرش را نه. کار فرعی باید گاه‌به‌گاه تمام شده را بررسی کند یا با انتظار منتظر بماند. هر زمینه را پس از کار با آزادسازی آزاد کنید، فرزندها پیش از پدر.

گونه‌ها

زمینه Context

ساختار زمینه
یک زمینه.
نامانگلیسیگونهتوضیح
statestateصحیح۶۴*وضعیت درونی: لغو شده، موعد و داشتن موعد.
parentparentزمینه*زمینه‌ی پدر؛ برای ریشه پوچ.
mumusync.Mutexقفلی که همه‌ی زمینه‌های یک درخت شریک‌اند.
cvcvsync.CondVarمتغیر شرطی که با لغو بیدار می‌شود.
is_rootis_rootمنطقی = نادرستآیا این زمینه ریشه است.
ctx-Context.salam
واردسازی زمینه

روال ریشه:
    پایه := زمینه.پس زمینه()
    ک := زمینه.با لغو(پایه)
    م := زمینه.با مهلت(ک، ۳۰)
    سرچاپ زمینه.تمام شده(م)، "[" + زمینه.خطا(م) + "]"، زمینه.موعد(م) > ۰، زمینه.موعد(پایه)
    سرچاپ زمینه.انتظار(م، ۱۰)
    سرچاپ زمینه.انتظار(م، ۱۰۰۰)، زمینه.خطا(م)
    زمینه.لغو(ک)
    سرچاپ زمینه.تمام شده(ک)، زمینه.خطا(ک)، زمینه.تمام شده(پایه)
    گذشته := زمینه.با موعد(پایه، ۱)
    سرچاپ زمینه.تمام شده(گذشته)، زمینه.خطا(گذشته)
    زمینه.آزادسازی(گذشته)
    زمینه.آزادسازی(م)
    زمینه.آزادسازی(ک)
    زمینه.آزادسازی(پایه)
پایان
خروجیfalse [] true 0 false true deadline exceeded true cancelled false true deadline exceeded

روال‌ها

پس زمینه Background

روال پس زمینه(): زمینه
زمینه‌ی ریشه که هیچ‌وقت خودبه‌خود تمام نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

با لغو WithCancel

روال با لغو(parent: زمینه): زمینه
فرزندی که با لغو تمام می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

با مهلت WithTimeout

روال با مهلت(parent: زمینه، ms: صحیح۶۴): زمینه
فرزندی که ms میلی‌ثانیه‌ی دیگر تمام می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

با موعد WithDeadline

روال با موعد(parent: زمینه، at_ms: صحیح۶۴): زمینه
فرزندی که در لحظه‌ی at_ms تمام می‌شود؛ زمان بر حسب میلی‌ثانیه، مثل همگام سازی.اکنون میلی ثانیه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

لغو Cancel

روال لغو(c: زمینه)
زمینه و همه‌ی فرزندانش را تمام می‌کند و منتظرها را بیدار می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

تمام شده IsDone

روال تمام شده(c: زمینه): منطقی
اگر زمینه یا یکی از پدرانش لغو شده یا مهلتش گذشته باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

خطا Err

روال خطا(c: زمینه): رشته
دلیل تمام شدن: cancelled یا deadline exceeded؛ اگر هنوز تمام نشده، رشته‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

موعد Deadline

روال موعد(c: زمینه): صحیح۶۴
نزدیک‌ترین موعد در زمینه و پدرانش، بر حسب میلی‌ثانیه؛ اگر موعدی نباشد، صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

انتظار Wait

روال انتظار(c: زمینه، ms: صحیح۶۴): منطقی
حداکثر ms میلی‌ثانیه صبر می‌کند تا زمینه تمام شود و می‌گوید تمام شده یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam

آزادسازی Free

روال آزادسازی(c: زمینه)
حافظه‌ی زمینه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ctx-Context.salam