{"id":1972,"date":"2023-12-06T12:25:01","date_gmt":"2023-12-06T11:25:01","guid":{"rendered":"https:\/\/oopm.org\/?page_id=1972"},"modified":"2024-11-26T14:30:54","modified_gmt":"2024-11-26T13:30:54","slug":"54-building-concurrency-abstractions","status":"publish","type":"page","link":"https:\/\/oopm.org\/?page_id=1972","title":{"rendered":"16. Building concurrency abstractions"},"content":{"rendered":"<div class=\"pdfprnt-buttons pdfprnt-buttons-page pdfprnt-top-right\"><a href=\"https:\/\/oopm.org\/index.php?rest_route=wpv2pages1972&print=pdf\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/oopm.org\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"View PDF\" \/><\/a><a href=\"https:\/\/oopm.org\/index.php?rest_route=wpv2pages1972&print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/oopm.org\/wp-content\/plugins\/pdf-print\/images\/print.png\" alt=\"image_print\" title=\"Print Content\" \/><\/a><\/div>\n<p class=\"wp-block-paragraph\">In this chapter, we show how to build high-level parallel abstractions like <code>Monitor<\/code>, etc as used in section <script>mkRef(\"A simple search system\")<\/script> and subsequent sections. These abstractions are built from primitive language mechanism in qBeta including preemptive coroutines and a basic synchronisation mechanism.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the next section, we introduce preemptive coroutines. Then follows a section where we describe the basic synchronization mechanism and show how to define the low-level synchronization mechanisms <code>Lock<\/code> and <code>Semaphore<\/code>. In the remaining sections we show how to define higher-level mechanisms like <code>Monitor<\/code> and asynchronous message-passing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<div style=\"display:flex; gap:10px;justify-content:center\" class=\"wps-pgfw-pdf-generate-icon__wrapper-frontend\">\n\t\t<a  href=\"https:\/\/oopm.org?action=genpdf&amp;id=1972\" class=\"pgfw-single-pdf-download-button\" ><img src=\"https:\/\/oopm.org\/wp-content\/plugins\/pdf-generator-for-wp\/admin\/src\/images\/PDF_Tray.svg\" title=\"Generate PDF\" style=\"width:auto; height:45px;\"><\/a>\n\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>In this chapter, we show how to build high-level parallel abstractions like Monitor, etc as used in section and subsequent sections. These abstractions are built from primitive language mechanism in qBeta including preemptive coroutines and a basic synchronisation mechanism. In the next section, we introduce preemptive coroutines. Then follows a section where we describe the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":21,"menu_order":16,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1972","page","type-page","status-publish","hentry"],"mb":[],"mfb_rest_fields":["title","gutenberg_elementor_mode"],"_links":{"self":[{"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/1972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oopm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1972"}],"version-history":[{"count":27,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/1972\/revisions"}],"predecessor-version":[{"id":9863,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/1972\/revisions\/9863"}],"up":[{"embeddable":true,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/21"}],"wp:attachment":[{"href":"https:\/\/oopm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}