{"size": 776, "ext": "scrbl", "max_stars_repo_path": "pkgs/racket-doc/scribblings/reference/sync.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/sync.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/sync.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": 24.25, "max_line_length": 69, "alphanum_fraction": 0.75}
#lang scribble/doc
@(require "mz.rkt")

@title[#:tag "all-sync" #:style 'toc]{Synchronization}

Racket's synchronization toolbox spans four layers:

@itemize[

@item{@tech{synchronizable events} --- a general framework for
synchronization;}

@item{@tech{channels} --- a primitive that can be used, in principle,
to build most other kinds of synchronizable events (except the ones
that compose events); and}

@item{@tech{semaphores} --- a simple and especially cheap primitive
for synchronization.}

@item{@tech{future semaphores} --- a simple synchronization primitive
for use with @tech{futures}.}

]


@local-table-of-contents[]

@include-section["evts.scrbl"]
@include-section["channels.scrbl"]
@include-section["semaphores.scrbl"]
@include-section["async-channels.scrbl"]
