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

نخ thread

نگه‌داشتن و منتظر ماندن برای نخ‌هایی که با spawn ساخته می‌شوند.

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

در سلام، روالی را که باید همزمان با بقیه‌ی برنامه اجرا شود با spawn راه می‌اندازید. spawn روالی بی‌ورودی و بی‌خروجی می‌گیرد و یک عدد به‌عنوان «دسته»ی نخ برمی‌گرداند. با join یا نخ.پیوستن صبر می‌کنید تا آن نخ تمام شود.

بسته‌ی نخ این دسته را در گونه‌ی نخ می‌پیچد تا بتوانید چند نخ را در یک وکتور نگه دارید و همه را یک‌جا منتظر بمانید. نخ‌ها حافظه‌ی سراسری را با هم شریک‌اند؛ برای کار با داده‌ی مشترک از همگام سازی یا اتمی استفاده کنید.

گونه‌ها

نخ Thread

ساختار نخ
یک نخ در حال اجرا یا تمام‌شده.
نامانگلیسیگونهتوضیح
handlehandleصحیح۶۴ = 0دسته‌ای که spawn برگردانده؛ صفر یعنی نامعتبر.
thread-Join.salam
واردسازی نخ
واردسازی همگام سازی

ناپایا جمع := ۰
ناپایا قفل := همگام سازی.قفل {}

روال کارگر():
    تکرار ۱۰۰۰:
        همگام سازی.قفل کردن(قفل)
        جمع += ۱
        همگام سازی.باز کردن قفل(قفل)
    پایان
پایان

روال ریشه:
    قفل = همگام سازی.قفل جدید()
    اول := نخ.جدید(spawn(کارگر))
    سرچاپ نخ.معتبر(اول)، نخ.دسته(اول) != ۰
    ناپایا گروه := وکتور {} برگردان وکتور<نخ.نخ>
    دیرکن گروه.آزادکن()
    تکرار ۳:
        گروه = نخ.جمع آوری(گروه، spawn(کارگر))
    پایان
    نخ.پیوستن(اول)
    نخ.پیوستن به همه(گروه)
    سرچاپ گروه.طول()، جمع
    خالی := نخ.جدید(۰)
    سرچاپ نخ.معتبر(خالی)، خالی.handle
    نخ.پیوستن(خالی)
    همگام سازی.نابودسازی(قفل)
پایان
خروجیtrue true 3 4000 false 0

روال‌ها

جدید New

روال جدید(h: صحیح۶۴): نخ
دسته‌ی spawn را در یک نخ می‌پیچد.

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

پیوستن Join

روال پیوستن(t: نخ)
صبر می‌کند تا نخ تمام شود. برای نخ نامعتبر کاری نمی‌کند.

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

پیوستن به همه JoinAll

روال پیوستن به همه(threads: وکتور<نخ>)
صبر می‌کند تا همه‌ی نخ‌های وکتور تمام شوند.

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

معتبر Valid

روال معتبر(t: نخ): منطقی
اگر دسته صفر نباشد، درست برمی‌گرداند.

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

دسته Handle

روال دسته(t: نخ): صحیح۶۴
دسته‌ی نخ.

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

جمع آوری Collect

روال جمع آوری(threads: وکتور<نخ>، h: صحیح۶۴): وکتور<نخ>
نخ تازه‌ای با این دسته به وکتور اضافه می‌کند و وکتور را برمی‌گرداند.

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