Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Monitor (synchronization)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== Brinch Hansen and Hoare developed the monitor concept in the early 1970s, based on earlier ideas of their own and of [[E. W. Dijkstra|Edsger Dijkstra]].<ref name=":2">{{cite conference |last1 = Hansen|first1 = Per Brinch|author1-link = Per Brinch Hansen|title = Monitors and concurrent Pascal: a personal history|book-title = HOPL-II: The second ACM SIGPLAN conference on History of programming languages|conference = History of Programming Languages|publisher = [[Association for Computing Machinery|ACM]]|location = New York, NY, USA|year = 1993|pages = 1β35|doi = 10.1145/155360.155361|isbn = 0-89791-570-4}}</ref> Brinch Hansen published the first monitor notation, adopting the [[Class (computer programming)|class]] concept of [[Simula|Simula 67]],<ref name=":0" /> and invented a queueing mechanism.<ref>{{Cite journal|title = Structured multiprogramming (Invited Paper)|last = Brinch Hansen|first = Per|date = July 1972|journal = Communications of the ACM|volume = 15|issue = 7|pages = 574β578|doi = 10.1145/361454.361473|s2cid = 14125530|doi-access = free}}</ref> Hoare refined the rules of process resumption.<ref name=":1" /> Brinch Hansen created the first implementation of monitors, in [[Concurrent Pascal]].<ref name=":2" /> Hoare demonstrated their equivalence to [[semaphore (programming)|semaphores]]. Monitors (and Concurrent Pascal) were soon used to structure process synchronization in the [[Solo operating system]].<ref>{{Cite journal|url = http://brinch-hansen.net/papers/1976b.pdf|title = The Solo operating system: a Concurrent Pascal program|last = Brinch Hansen|first = Per|date = April 1976|journal = Software: Practice and Experience}}</ref><ref>{{Cite book|title = The Architecture of Concurrent Programs|last = Brinch Hansen|first = Per|publisher = Prentice Hall|year = 1977|isbn = 978-0-13-044628-2}}</ref> Programming languages that have supported monitors include: * [[Ada (programming language)|Ada]] since Ada 95 (as protected objects) * [[C Sharp (programming language)|C#]] (and other languages that use the [[.NET Framework]]) * [[Concurrent Euclid]] * [[Concurrent Pascal]] * [[D (programming language)|D]] * [[Delphi (programming language)|Delphi]] (Delphi 2009 and above, via TObject.Monitor) * [[Java (programming language)|Java]] (via the wait and notify methods) * [[Go (programming language)|Go]]<ref>{{Cite web|title=sync - The Go Programming Language|url=https://golang.org/pkg/sync/#Cond|access-date=2021-06-17|website=golang.org}}</ref><ref>{{Cite web|title=What's the "sync.Cond" {{!}} dtyler.io|url=https://dtyler.io/articles/2021/04/13/sync_cond/|access-date=2021-06-17|website=dtyler.io|archive-url=https://web.archive.org/web/20211001201338/https://dtyler.io/articles/2021/04/13/sync_cond/ |archive-date=2021-10-01 }}</ref> * [[Mesa (programming language)|Mesa]] * [[Modula-3]] * [[Python (programming language)|Python]] (via [https://docs.python.org/library/threading.html#condition-objects threading.Condition] object) * [[Ruby (programming language)|Ruby]] * [[Squeak]] Smalltalk * [[Turing (programming language)|Turing]], [[Turing+]], and [[Object-Oriented Turing]] * [[ΞΌC++]] * [[Visual Prolog]] A number of libraries have been written that allow monitors to be constructed in languages that do not support them natively. When library calls are used, it is up to the programmer to explicitly mark the start and end of code executed with mutual exclusion. [[POSIX Threads|Pthreads]] is one such library.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)