{"size": 1312, "ext": "scrbl", "max_stars_repo_path": "pkgs/racket-doc/scribblings/reference/thread-groups.scrbl", "max_stars_repo_name": "lkh01/racket", "max_stars_repo_stars_event_min_datetime": "2018-07-29T04:13:52.000Z", "max_stars_repo_stars_event_max_datetime": "2022-02-14T16:11:17.000Z", "max_issues_repo_path": "pkgs/racket-doc/scribblings/reference/thread-groups.scrbl", "max_issues_repo_name": "lkh01/racket", "max_issues_repo_issues_event_min_datetime": "2017-08-25T20:26:37.000Z", "max_issues_repo_issues_event_max_datetime": "2022-02-26T17:48:40.000Z", "max_forks_repo_path": "pkgs/racket-doc/scribblings/reference/thread-groups.scrbl", "max_forks_repo_name": "lkh01/racket", "max_forks_repo_forks_event_min_datetime": "2016-04-25T11:47:57.000Z", "max_forks_repo_forks_event_max_datetime": "2017-05-09T14:52:48.000Z"}
{"max_stars_count": 10, "max_issues_count": 15, "max_forks_count": 3, "avg_line_length": 35.4594594595, "max_line_length": 74, "alphanum_fraction": 0.7698170732}
#lang scribble/doc
@(require "mz.rkt")

@title[#:tag "threadgroups"]{Thread Groups}

A @deftech{thread group} is a collection of threads and other thread
groups that have equal claim to the CPU. By nesting thread groups and
by creating certain threads within certain groups, a programmer can
control the amount of CPU allocated to a set of threads. Every thread
belongs to a thread group, which is determined by the
@racket[current-thread-group] parameter when the thread is
created. Thread groups and custodians (see @secref["custodians"])
are independent.

The root thread group receives all of the CPU that the operating
system gives Racket. Every thread or nested group in a particular
thread group receives equal allocation of the CPU (a portion of the
group's access), although a thread may relinquish part of its
allocation by sleeping or synchronizing with other processes.

@defproc[(make-thread-group [group thread-group? (current-thread-group)]) 
         thread-group?]{

Creates a new thread group that belongs to @racket[group].}


@defproc[(thread-group? [v any/c]) boolean?]{

Returns @racket[#t] if @racket[v] is a thread group value, @racket[#f]
otherwise.}


@defparam[current-thread-group group thread-group?]{

A @tech{parameter} that determines the thread group for newly created
threads.}
