<c- Copyright (c) 99-2025 by4he D Language Foundation All Rights Reserved. https:]ådlang.org/foundation_overview.html --> std.concurrency - D Programming Language<zËitle> <link rel="stylesheet" href="..ussuodemirror.css"> <link rel="stylesheet" href="../css/style.css"> <link rel="stylesheet" href="../css/print.css" media="print"> <link rel="shortcut icon" href="..u‹avicon.ico"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.1, maximum-scale=10.0"> </head> <body id='std.concurrency' class='std'> <script type="textv®avascript">document.body.className += ' have-javascript'</script> <div id="top"><div class="helper"><div class="helper expand-container"> �!�!div class="logo"><a href=".."><img id="logo" alt="D Logo" src="../imagesu(logo.svg"></a></div> �!�!a href="..wÛenu.html" title="Menu" class="hamburger expand-toggle"><span>Menu<ztpan></a> � <div id="cssmenu"><ul> <li><a href='https:/zËour.dlang.org'><span>Learn</span><tæ><vîi> �!�!li class='expand-container'><a class='expand-toggle' href='../documentation.html'><span>Documentation<ztpan></a> � <ul class='expand-content'> �!�!li><a href='..ztpec/spec.html'>Language Reference<tæ><vîi> �!�!li><a href='..y:hobos/index.html'>Library Reference<tæ><vîi> �!�!li><a href='..u(md.html'>Command-line Reference<tæ><vîi> �!�!li class="menu-divider"><a href='../comparison.html'>Feature Overview<tæ><vîi> �!�!li><a href='..tærticles.html'>Articles</a></li> �!�!zùl></li> <li><a href='../download.html'><span>Downloads</span><tæ><vîi> �!�!li><a href='https:]åcode.dlang.org'><span>Packages</span><tæ><vîi> �!�!li class='expand-container'><a class='expand-toggle' href='../community.html'><span>Community<ztpan></a> � <ul class='expand-content'> �!�!li><a href='https:]ådlang.org/blog'>Blog</a></li> <li><a href='../orgs-using-d.html'>Orgs using D<tæ><vîi> �!�!li><a href='https:]åtwitter.com/search?q=%�(y>�)dlang'>Twitter</a></li> <li class="menu-divider"><a href='https:]ådiscord.gguMZk9Q4'>Discord (community-run)<tæ><vîi> �!�!li><a href='https:]åforum.dlang.org'>Forums<tæ><vîi> �!�!li><a href='irc:]åirc.libera.chat/d'>IRC</a></li> <li><a href='https:/|øiki.dlang.org'>Wiki<tæ><vîi> �!�!li class="menu-divider"><a href='../bugstats.html'>Issues<tæ><vîi> �!�!li><a href='..uontributing.html'>Contributing</a></li> <li class="menu-divider"><a href='..u‹oundation/contributors.html'>Contributors<tæ><vîi> �!�!li><a href='..u‹oundation/index.html'>Foundation</a></li> <li><a href='../ztecurity.html'>Security Team<tæ><vîi> �!�!li class="menu-divider"><a href='https:/zttore.dlang.org[€>Store</a></li> <li><a href='../foundationu(onate.html'>Donate</a></li> <li><a href='../foundationztponsors.html'>Sponsors</a></li> �!�!zùl></li> <li class='expand-container'><a class='expand-toggle' href='..y¾esources.html'><span>Resources</span><tæ> <ul class='expand-content'> <li><a href='https:/zËour.dlang.org'>Tour<tæ><vîi> �!�!li><a href='https:]åwiki.dlang.orge‡ooks'>Books<tæ><vîi> �!�!li><a href='https:]åwiki.dlang.orgl4utorials'>Tutorials<tæ><vîi> �!�!li class="menu-divider"><a href='https:/|øiki.dlang.org/Development_tools'>Tools</a></li> <li><a href='https:/|øiki.dlang.org/Editors'>Editors</a></li> <li><a href='https:/|øiki.dlang.org/IDEs'>IDEs</a></li> <li><a href='https:/y¾un.dlang.io'>run.dlang.io<tæ><vîi> �!�!li><a href='http:/y¾ainers.github.io|sisuald|sisualdltartPage.html'>Visual D<tæ><vîi> �!�!li class="menu-divider"><a href='../acknowledgements.html'>Acknowledgments</a></li> <li><a href='../dstyle.html'>D Style</a></li> <li><a href='../specu’lossary.html'>Glossary</a></li> <li><a href='../sitemap.html'>Sitemap<tæ><vîi> </ul><vîi> <zùl></div> �!�!div class="search-container expand-container"> <a href="../search.html" class="expand-toggle"�4itle="Search"><span>Search</span><tæ> �!�!div id="search-box"> <form method="get" action="https:/u’oogle.com/search"> �!�!input type="hidden" id="domains" name="domains" value="dlang.org"> �!�!input type="hidden" id="sourceid" name="sourceid" value="google-search"> �!�!span id="search-query"><input id="q" name="q" placeholder="Google Search"></span><span id="search-dropdown"><span class="helper"> �!�!select id="sitesearch" name="sitesearch" size="1"> �!�!option�6alue="dlang.org">Entire Site</option> <option �6alue="dlang.org/spec">Language</option> <option selected�6alue="dlang.org/phobos">Library<wóption> �!�!option value="forum.dlang.org">Forums</option> �!�!ztelect> �!�!ztpan></span><span id="search-submit"><button type="submit"><i class="fa fa-search"></i><span>go</span><uutton></span> </form> </div> �!�!u(iv> </div></div></div> <div class="container"> � <div class="subnav-helper"><u(iv> <div class="subnav"> <div class="head"> <h�(ŒÇ�)library Reference<vv�(ŒÇ�) �!�!p><span class="smallprint">version 2.1�.0 (prerelease) <span class="separator"><br></span> </span> </p> �!�!p><a href="index.html">overview<tæ><y:> </div> �!�!ul> <li><a href='object.html'><span><em class="tt">object</em><ztpan></a></li> <li class='expand-container modlist-submenu-std'><a class='expand-toggle' href='#'><span><em class="tt">std</em><ztpan></a> <ul><li> �!�!a href="std_algorithm.html" title="std.algorithm"><span class="d_inlinecode donthyphenate notranslate">algorithm</span><tæ><ul><li> �!�!a href="std_algorithm_comparison.html"�4itle="std.algorithm.comparison"><span class="d_inlinecode donthyphenate notranslate">comparison<ztpan></a></li><li> �!�!a href="std_algorithm_iteration.html" title="std.algorithm.iteration"><span class="d_inlinecode donthyphenate notranslate">iteration</span><tæ><vîi><li> <a href="std_algorithm_mutation.html" title="std.algorithm.mutation"><span class="d_inlinecode donthyphenate notranslate">mutation</span><tæ><vîi><li> <a href="std_algorithm_searching.html"�4itle="std.algorithm.searching"><span class="d_inlinecode donthyphenate notranslate">searching<ztpan></a></li><li> �!�!a href="std_algorithm_setops.html"�4itle="std.algorithm.setops"><span class="d_inlinecode donthyphenate notranslate">setops<ztpan></a></li><li> �!�!a href="std_algorithm_sorting.html" title="std.algorithm.sorting"><span class="d_inlinecode donthyphenate notranslate">sorting</span><tæ> </li><zùl></li><li> �!�!a href="std_array.html" title="std.array"><span class="d_inlinecode donthyphenate notranslate">array</span><tæ><vîi><li> <a href="std_ascii.html"�4itle="std.ascii"><span class="d_inlinecode donthyphenate notranslate">ascii<ztpan></a></li><li> �!�!a href="std_base64.html"�4itle="std.base64"><span class="d_inlinecode donthyphenate notranslate">base64<ztpan></a></li><li> �!�!a href="std_bigint.html"�4itle="std.bigint"><span class="d_inlinecode donthyphenate notranslate">bigint<ztpan></a></li><li> �!�!a href="std_bitmanip.html"�4itle="std.bitmanip"><span class="d_inlinecode donthyphenate notranslate">bitmanip<ztpan></a></li><li> �!�!a href="std_checkedint.html"�4itle="std.checkedint"><span class="d_inlinecode donthyphenate notranslate">checkedint<ztpan></a></li><li> �!�!a href="std_compiler.html"�4itle="std.compiler"><span class="d_inlinecode donthyphenate notranslate">compiler<ztpan></a></li><li> �!�!a href="std_complex.html" title="std.complex"><span class="d_inlinecode donthyphenate notranslate">complex</span><tæ><vîi><li> <a href="std_concurrency.html"�4itle="std.concurrency"><span class="d_inlinecode donthyphenate notranslate">concurrency<ztpan></a></li><li> �!�!a href="std_container.html" title="std.container"><span class="d_inlinecode donthyphenate notranslate">container</span><tæ><ul><li> �!�!a href="std_container_array.html" title="std.container.array"><span class="d_inlinecode donthyphenate notranslate">array</span><tæ><vîi><li> <a href="std_container_binaryheap.html" title="std.container.binaryheap"><span class="d_inlinecode donthyphenate notranslate">binaryheap</span><tæ><vîi><li> <a href="std_container_dlist.html"�4itle="std.container.dlist"><span class="d_inlinecode donthyphenate notranslate">dlist<ztpan></a></li><li> �!�!a href="std_container_rbtree.html"�4itle="std.container.rbtree"><span class="d_inlinecode donthyphenate notranslate">rbtree<ztpan></a></li><li> �!�!a href="std_container_slist.html" title="std.container.slist"><span class="d_inlinecode donthyphenate notranslate">slist</span><tæ><vîi><li> <a href="std_container_util.html" title="std.container.util"><span class="d_inlinecode donthyphenate notranslate">util</span><tæ> </li><zùl></li><li> �!�!a href="std_conv.html"�4itle="std.conv"><span class="d_inlinecode donthyphenate notranslate">conv<ztpan></a></li><li> �!�!a href="std_csv.html" title="std.csv"><span class="d_inlinecode donthyphenate notranslate">csv</span><tæ><vîi><li> <a href="std_datetime.html" title="std.datetime"><span class="d_inlinecode donthyphenate notranslate">datetime</span><tæ><ul><li> �!�!a href="std_datetime_date.html" title="std.datetime.date"><span class="d_inlinecode donthyphenate notranslate">date<ztpan></a></li><li> �!�!a href="std_datetime_interval.html" title="std.datetime.interval"><span class="d_inlinecode donthyphenate notranslate">interval<ztpan></a></li><li> �!�!a href="std_datetime_stopwatch.html"�4itle="std.datetime.stopwatch"><span class="d_inlinecode donthyphenate notranslate">stopwatch</span><tæ><vîi><li> <a href="std_datetime_systime.html" title="std.datetime.systime"><span class="d_inlinecode donthyphenate notranslate">systime<ztpan></a></li><li> �!�!a href="std_datetime_timezone.html" title="std.datetime.timezone"><span class="d_inlinecode donthyphenate notranslate">timezone<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_demangle.html" title="std.demangle"><span class="d_inlinecode donthyphenate notranslate">demangle</span><tæ><vîi><li> <a href="std_digest.html" title="std.digest"><span class="d_inlinecode donthyphenate notranslate">digest</span><tæ><ul><li> �!�!a href="std_digest_crc.html"�4itle="std.digest.crc"><span class="d_inlinecode donthyphenate notranslate">crc</span><tæ><vîi><li> <a href="std_digest_hmac.html"�4itle="std.digest.hmac"><span class="d_inlinecode donthyphenate notranslate">hmac</span><tæ><vîi><li> <a href="std_digest_md.html"�4itle="std.digest.md"><span class="d_inlinecode donthyphenate notranslate">md</span><tæ><vîi><li> <a href="std_digest_murmurhash.html"�4itle="std.digest.murmurhash"><span class="d_inlinecode donthyphenate notranslate">murmurhash</span><tæ><vîi><li> <a href="std_digest_ripemd.html"�4itle="std.digest.ripemd"><span class="d_inlinecode donthyphenate notranslate">ripemd</span><tæ><vîi><li> <a href="std_digest_sha.html" title="std.digest.sha"><span class="d_inlinecode donthyphenate notranslate">sha<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_encoding.html" title="std.encoding"><span class="d_inlinecode donthyphenate notranslate">encoding</span><tæ><vîi><li> <a href="std_exception.html"�4itle="std.exception"><span class="d_inlinecode donthyphenate notranslate">exception<ztpan></a></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">experimental</span><vv7><ul><li> <a href="std_experimental_allocator.html" title="std.experimental.allocator"><span class="d_inlinecode donthyphenate notranslate">allocator<ztpan></a><ul><li> <a href="std_experimental_allocator_building_blocks.html" title="std.experimental.allocator.building_blocks"><span class="d_inlinecode donthyphenate notranslate">building_blocks<ztpan></a><ul><li> <a href="std_experimental_allocator_building_blocks_affix_allocator.html" title="std.experimental.allocator.building_blocks.affix_allocator"><span class="d_inlinecode donthyphenate notranslate">affix_allocator<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_aligned_block_list.html" title="std.experimental.allocator.building_blocks.aligned_block_list"><span class="d_inlinecode donthyphenate notranslate">aligned_block_list<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_allocator_list.html" title="std.experimental.allocator.building_blocks.allocator_list"><span class="d_inlinecode donthyphenate notranslate">allocator_list<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_ascending_page_allocator.html" title="std.experimental.allocator.building_blocks.ascending_page_allocator"><span class="d_inlinecode donthyphenate notranslate">ascending_page_allocator<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_bitmapped_block.html"�4itle="std.experimental.allocator.building_blocks.bitmapped_block"><span class="d_inlinecode donthyphenate notranslate">bitmapped_block</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_bucketizer.html"�4itle="std.experimental.allocator.building_blocks.bucketizer"><span class="d_inlinecode donthyphenate notranslate">bucketizer</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_fallback_allocator.html"�4itle="std.experimental.allocator.building_blocks.fallback_allocator"><span class="d_inlinecode donthyphenate notranslate">fallback_allocator</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_free_list.html" title="std.experimental.allocator.building_blocks.free_list"><span class="d_inlinecode donthyphenate notranslate">free_list<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_free_tree.html"�4itle="std.experimental.allocator.building_blocks.free_tree"><span class="d_inlinecode donthyphenate notranslate">free_tree</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_kernighan_ritchie.html" title="std.experimental.allocator.building_blocks.kernighan_ritchie"><span class="d_inlinecode donthyphenate notranslate">kernighan_ritchie<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_null_allocator.html" title="std.experimental.allocator.building_blocks.null_allocator"><span class="d_inlinecode donthyphenate notranslate">null_allocator<ztpan></a></li><li> �!�!a href="std_experimental_allocator_building_blocks_quantizer.html"�4itle="std.experimental.allocator.building_blocks.quantizer"><span class="d_inlinecode donthyphenate notranslate">quantizer</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_region.html"�4itle="std.experimental.allocator.building_blocks.region"><span class="d_inlinecode donthyphenate notranslate">region</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_scoped_allocator.html"�4itle="std.experimental.allocator.building_blocks.scoped_allocator"><span class="d_inlinecode donthyphenate notranslate">scoped_allocator</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_segregator.html"�4itle="std.experimental.allocator.building_blocks.segregator"><span class="d_inlinecode donthyphenate notranslate">segregator</span><tæ><vîi><li> <a href="std_experimental_allocator_building_blocks_stats_collector.html" title="std.experimental.allocator.building_blocks.stats_collector"><span class="d_inlinecode donthyphenate notranslate">stats_collector<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_experimental_allocator_common.html"�4itle="std.experimental.allocator.common"><span class="d_inlinecode donthyphenate notranslate">common</span><tæ><vîi><li> <a href="std_experimental_allocator_gc_allocator.html"�4itle="std.experimental.allocator.gc_allocator"><span class="d_inlinecode donthyphenate notranslate">gc_allocator</span><tæ><vîi><li> <a href="std_experimental_allocator_mallocator.html"�4itle="std.experimental.allocator.mallocator"><span class="d_inlinecode donthyphenate notranslate">mallocator</span><tæ><vîi><li> <a href="std_experimental_allocator_mmap_allocator.html"�4itle="std.experimental.allocator.mmap_allocator"><span class="d_inlinecode donthyphenate notranslate">mmap_allocator</span><tæ><vîi><li> <a href="std_experimental_allocator_showcase.html"�4itle="std.experimental.allocator.showcase"><span class="d_inlinecode donthyphenate notranslate">showcase</span><tæ><vîi><li> <a href="std_experimental_allocator_typed.html" title="std.experimental.allocator.typed"><span class="d_inlinecode donthyphenate notranslate">typed<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_experimental_checkedint.html"�4itle="std.experimental.checkedint"><span class="d_inlinecode donthyphenate notranslate">checkedint</span><tæ><vîi><li> <a href="std_experimental_logger.html"�4itle="std.experimental.logger"><span class="d_inlinecode donthyphenate notranslate">logger</span><tæ><ul><li> �!�!a href="std_experimental_logger_core.html"�4itle="std.experimental.logger.core"><span class="d_inlinecode donthyphenate notranslate">core<ztpan></a></li><li> �!�!a href="std_experimental_logger_filelogger.html"�4itle="std.experimental.logger.filelogger"><span class="d_inlinecode donthyphenate notranslate">filelogger<ztpan></a></li><li> �!�!a href="std_experimental_logger_multilogger.html" title="std.experimental.logger.multilogger"><span class="d_inlinecode donthyphenate notranslate">multilogger</span><tæ><vîi><li> <a href="std_experimental_logger_nulllogger.html" title="std.experimental.logger.nulllogger"><span class="d_inlinecode donthyphenate notranslate">nulllogger</span><tæ> </li><zùl> �!�!vîi></ul><vîi><li> <a href="std_file.html" title="std.file"><span class="d_inlinecode donthyphenate notranslate">file</span><tæ><vîi><li> <a href="std_format.html" title="std.format"><span class="d_inlinecode donthyphenate notranslate">format</span><tæ><ul><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">internal</span><vv7><ul><li> <a href="std_format_internal_floats.html" title="std.format.internal.floats"><span class="d_inlinecode donthyphenate notranslate">floats</span><tæ><vîi><li> <a href="std_format_internal_read.html" title="std.format.internal.read"><span class="d_inlinecode donthyphenate notranslate">read</span><tæ><vîi><li> <a href="std_format_internal_write.html"�4itle="std.format.internal.write"><span class="d_inlinecode donthyphenate notranslate">write<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_format_read.html"�4itle="std.format.read"><span class="d_inlinecode donthyphenate notranslate">read</span><tæ><vîi><li> <a href="std_format_spec.html"�4itle="std.format.spec"><span class="d_inlinecode donthyphenate notranslate">spec</span><tæ><vîi><li> <a href="std_format_write.html" title="std.format.write"><span class="d_inlinecode donthyphenate notranslate">write<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_functional.html" title="std.functional"><span class="d_inlinecode donthyphenate notranslate">functional</span><tæ><vîi><li> <a href="std_getopt.html" title="std.getopt"><span class="d_inlinecode donthyphenate notranslate">getopt</span><tæ><vîi><li> <a href="std_int8.html" title="std.int8"><span class="d_inlinecode donthyphenate notranslate">int1�(R´�)</span><tæ><vîi><li> <a href="std_json.html" title="std.json"><span class="d_inlinecode donthyphenate notranslate">json</span><tæ><vîi><li> <a href="std_logger.html" title="std.logger"><span class="d_inlinecode donthyphenate notranslate">logger</span><tæ><ul><li> �!�!a href="std_logger_core.html" title="std.logger.core"><span class="d_inlinecode donthyphenate notranslate">core<ztpan></a></li><li> �!�!a href="std_logger_filelogger.html" title="std.logger.filelogger"><span class="d_inlinecode donthyphenate notranslate">filelogger<ztpan></a></li><li> �!�!a href="std_logger_multilogger.html"�4itle="std.logger.multilogger"><span class="d_inlinecode donthyphenate notranslate">multilogger</span><tæ><vîi><li> <a href="std_logger_nulllogger.html"�4itle="std.logger.nulllogger"><span class="d_inlinecode donthyphenate notranslate">nulllogger</span><tæ> </li><zùl></li><li> �!�!a href="std_math.html"�4itle="std.math"><span class="d_inlinecode donthyphenate notranslate">math<ztpan></a><ul><li> <a href="std_math_algebraic.html" title="std.math.algebraic"><span class="d_inlinecode donthyphenate notranslate">algebraic<ztpan></a></li><li> �!�!a href="std_math_constants.html"�4itle="std.math.constants"><span class="d_inlinecode donthyphenate notranslate">constants</span><tæ><vîi><li> <a href="std_math_exponential.html" title="std.math.exponential"><span class="d_inlinecode donthyphenate notranslate">exponential<ztpan></a></li><li> �!�!a href="std_math_hardware.html" title="std.math.hardware"><span class="d_inlinecode donthyphenate notranslate">hardware<ztpan></a></li><li> �!�!a href="std_math_operations.html" title="std.math.operations"><span class="d_inlinecode donthyphenate notranslate">operations<ztpan></a></li><li> �!�!a href="std_math_remainder.html"�4itle="std.math.remainder"><span class="d_inlinecode donthyphenate notranslate">remainder</span><tæ><vîi><li> <a href="std_math_rounding.html"�4itle="std.math.rounding"><span class="d_inlinecode donthyphenate notranslate">rounding</span><tæ><vîi><li> <a href="std_math_traits.html"�4itle="std.math.traits"><span class="d_inlinecode donthyphenate notranslate">traits</span><tæ><vîi><li> <a href="std_math_trigonometry.html"�4itle="std.math.trigonometry"><span class="d_inlinecode donthyphenate notranslate">trigonometry</span><tæ> </li><zùl></li><li> �!�!a href="std_mathspecial.html" title="std.mathspecial"><span class="d_inlinecode donthyphenate notranslate">mathspecial</span><tæ><vîi><li> <a href="std_meta.html" title="std.meta"><span class="d_inlinecode donthyphenate notranslate">meta</span><tæ><vîi><li> <a href="std_mmfile.html" title="std.mmfile"><span class="d_inlinecode donthyphenate notranslate">mmfile</span><tæ><vîi><li> <h7><span class="d_inlinecode donthyphenate notranslate">net</span><vv7><ul><li> <a href="std_net_curl.html" title="std.net.curl"><span class="d_inlinecode donthyphenate notranslate">curl</span><tæ><vîi><li> <a href="std_net_isemail.html"�4itle="std.net.isemail"><span class="d_inlinecode donthyphenate notranslate">isemail<ztpan></a> �!�!vîi></ul><vîi><li> <a href="std_numeric.html"�4itle="std.numeric"><span class="d_inlinecode donthyphenate notranslate">numeric<ztpan></a></li><li> �!�!a href="std_outbuffer.html" title="std.outbuffer"><span class="d_inlinecode donthyphenate notranslate">outbuffer</span><tæ><vîi><li> <a href="std_parallelism.html"�4itle="std.parallelism"><span class="d_inlinecode donthyphenate notranslate">parallelism<ztpan></a></li><li> �!�!a href="std_path.html"�4itle="std.path"><span class="d_inlinecode donthyphenate notranslate">path<ztpan></a></li><li> �!�!a href="std_process.html" title="std.process"><span class="d_inlinecode donthyphenate notranslate">process</span><tæ><vîi><li> <a href="std_random.html" title="std.random"><span class="d_inlinecode donthyphenate notranslate">random</span><tæ><vîi><li> <a href="std_range.html"�4itle="std.range"><span class="d_inlinecode donthyphenate notranslate">range<ztpan></a><ul><li> <a href="std_range_interfaces.html" title="std.range.interfaces"><span class="d_inlinecode donthyphenate notranslate">interfaces</span><tæ><vîi><li> <a href="std_range_primitives.html" title="std.range.primitives"><span class="d_inlinecode donthyphenate notranslate">primitives</span><tæ> </li><zùl></li><li> �!�!a href="std_regex.html" title="std.regex"><span class="d_inlinecode donthyphenate notranslate">regex</span><tæ><vîi><li> <a href="std_signals.html"�4itle="std.signals"><span class="d_inlinecode donthyphenate notranslate">signals<ztpan></a></li><li> �!�!a href="std_socket.html"�4itle="std.socket"><span class="d_inlinecode donthyphenate notranslate">socket<ztpan></a></li><li> �!�!a href="std_stdint.html"�4itle="std.stdint"><span class="d_inlinecode donthyphenate notranslate">stdint<ztpan></a></li><li> �!�!a href="std_stdio.html" title="std.stdio"><span class="d_inlinecode donthyphenate notranslate">stdio</span><tæ><vîi><li> <a href="std_string.html" title="std.string"><span class="d_inlinecode donthyphenate notranslate">string</span><tæ><vîi><li> <a href="std_sumtype.html"�4itle="std.sumtype"><span class="d_inlinecode donthyphenate notranslate">sumtype<ztpan></a></li><li> �!�!a href="std_system.html"�4itle="std.system"><span class="d_inlinecode donthyphenate notranslate">system<ztpan></a></li><li> �!�!a href="std_traits.html"�4itle="std.traits"><span class="d_inlinecode donthyphenate notranslate">traits<ztpan></a></li><li> �!�!a href="std_typecons.html"�4itle="std.typecons"><span class="d_inlinecode donthyphenate notranslate">typecons<ztpan></a></li><li> �!�!a href="std_uni.html" title="std.uni"><span class="d_inlinecode donthyphenate notranslate">uni</span><tæ><vîi><li> <a href="std_uri.html"�4itle="std.uri"><span class="d_inlinecode donthyphenate notranslate">uri<ztpan></a></li><li> �!�!a href="std_utf.html" title="std.utf"><span class="d_inlinecode donthyphenate notranslate">utf</span><tæ><vîi><li> <a href="std_uuid.html" title="std.uuid"><span class="d_inlinecode donthyphenate notranslate">uuid</span><tæ><vîi><li> <a href="std_variant.html"�4itle="std.variant"><span class="d_inlinecode donthyphenate notranslate">variant<ztpan></a></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">windows<ztpan></h7><ul><li> �!�!a href="std_windows_charset.html" title="std.windows.charset"><span class="d_inlinecode donthyphenate notranslate">charset</span><tæ><vîi><li> <a href="std_windows_syserror.html" title="std.windows.syserror"><span class="d_inlinecode donthyphenate notranslate">syserror</span><tæ> </li><zùl></li><li> �!�!a href="std_zip.html" title="std.zip"><span class="d_inlinecode donthyphenate notranslate">zip</span><tæ><vîi><li> <a href="std_zlib.html" title="std.zlib"><span class="d_inlinecode donthyphenate notranslate">zlib</span><tæ> </li><zùl> <vîi> <li class='expand-container modlist-submenu-etc'><a class='expand-toggle' href='#'><span><em class="tt">etc<u0m></span><tæ> <ul><li> <h7><span class="d_inlinecode donthyphenate notranslate">c</span><vv7><ul><li> <a href="etc_c_curl.html" title="etc.c.curl"><span class="d_inlinecode donthyphenate notranslate">curl</span><tæ><vîi><li> <a href="etc_c_odbc.html" title="etc.c.odbc"><span class="d_inlinecode donthyphenate notranslate">odbc</span><tæ><ul><li> �!�!a href="etc_c_odbc_odbc3�(‘Ñ�)html" title="etc.c.odbc.odbc0Õ0¡0é0Ã0É"><span class="d_inlinecode donthyphenate notranslate">odbc3�(vã�)ztpan></a></li><li> �!�!a href="etc_c_odbc_odbc64.html" title="etc.c.odbc.odbc64"><span class="d_inlinecode donthyphenate notranslate">odbc64<ztpan></a></li><li> �!�!a href="etc_c_odbc_sql.html"�4itle="etc.c.odbc.sql"><span class="d_inlinecode donthyphenate notranslate">sql</span><tæ><vîi><li> <a href="etc_c_odbc_sqlext.html"�4itle="etc.c.odbc.sqlext"><span class="d_inlinecode donthyphenate notranslate">sqlext</span><tæ><vîi><li> <a href="etc_c_odbc_sqltypes.html"�4itle="etc.c.odbc.sqltypes"><span class="d_inlinecode donthyphenate notranslate">sqltypes</span><tæ><vîi><li> <a href="etc_c_odbc_sqlucode.html"�4itle="etc.c.odbc.sqlucode"><span class="d_inlinecode donthyphenate notranslate">sqlucode</span><tæ> </li><zùl></li><li> �!�!a href="etc_c_sqlite0Ô0¢0¹0È0ëhtml" title="etc.c.sqlite3"><span class="d_inlinecode donthyphenate notranslate">sqlite3</span><tæ><vîi><li> <a href="etc_c_zlib.html" title="etc.c.zlib"><span class="d_inlinecode donthyphenate notranslate">zlib</span><tæ> </li><zùl></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">valgrind</span><vv7><ul><li> <a href="etc_valgrind_valgrind.html"�4itle="etc.valgrind.valgrind"><span class="d_inlinecode donthyphenate notranslate">valgrind</span><tæ> </li><zùl> <vîi></ul> </li> <li class='expand-container modlist-submenu-core'><a class='expand-toggle' href='#'><span><em class="tt">core</em><ztpan></a> <ul><li> �!�!a href="core_atomic.html" title="core.atomic"><span class="d_inlinecode donthyphenate notranslate">atomic<ztpan></a></li><li> �!�!a href="core_attribute.html"�4itle="core.attribute"><span class="d_inlinecode donthyphenate notranslate">attribute</span><tæ><vîi><li> <a href="core_bitop.html" title="core.bitop"><span class="d_inlinecode donthyphenate notranslate">bitop<ztpan></a></li><li> �!�!a href="core_builtins.html" title="core.builtins"><span class="d_inlinecode donthyphenate notranslate">builtins<ztpan></a></li><li> �!�!a href="core_checkedint.html" title="core.checkedint"><span class="d_inlinecode donthyphenate notranslate">checkedint<ztpan></a></li><li> �!�!a href="core_cpuid.html"�4itle="core.cpuid"><span class="d_inlinecode donthyphenate notranslate">cpuid</span><tæ><vîi><li> <a href="core_demangle.html"�4itle="core.demangle"><span class="d_inlinecode donthyphenate notranslate">demangle</span><tæ><vîi><li> <a href="core_exception.html" title="core.exception"><span class="d_inlinecode donthyphenate notranslate">exception<ztpan></a></li><li> �!�!a href="core_factory.html"�4itle="core.factory"><span class="d_inlinecode donthyphenate notranslate">factory</span><tæ><vîi><li> <h7><span class="d_inlinecode donthyphenate notranslate">gc<ztpan></h7><ul><li> �!�!a href="core_gc_config.html"�4itle="core.gc.config"><span class="d_inlinecode donthyphenate notranslate">config<ztpan></a></li><li> �!�!a href="core_gc_gcinterface.html" title="core.gc.gcinterface"><span class="d_inlinecode donthyphenate notranslate">gcinterface</span><tæ><vîi><li> <a href="core_gc_registry.html" title="core.gc.registry"><span class="d_inlinecode donthyphenate notranslate">registry</span><tæ> </li><zùl></li><li> �!�!a href="core_int8.html" title="core.int1�(R´�)"><span class="d_inlinecode donthyphenate notranslate">int8<ztpan></a></li><li> �!�!a href="core_interpolation.html"�4itle="core.interpolation"><span class="d_inlinecode donthyphenate notranslate">interpolation</span><tæ><vîi><li> <a href="core_lifetime.html"�4itle="core.lifetime"><span class="d_inlinecode donthyphenate notranslate">lifetime</span><tæ><vîi><li> <a href="core_math.html"�4itle="core.math"><span class="d_inlinecode donthyphenate notranslate">math</span><tæ><vîi><li> <a href="core_memory.html"�4itle="core.memory"><span class="d_inlinecode donthyphenate notranslate">memory</span><tæ><vîi><li> <a href="core_runtime.html" title="core.runtime"><span class="d_inlinecode donthyphenate notranslate">runtime<ztpan></a></li><li> �!�!a href="core_simd.html" title="core.simd"><span class="d_inlinecode donthyphenate notranslate">simd<ztpan></a></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">stdc</span><vv7><ul><li> <a href="core_stdc_assert_.html"�4itle="core.stdc.assert_"><span class="d_inlinecode donthyphenate notranslate">assert_<ztpan></a></li><li> �!�!a href="core_stdc_complex.html" title="core.stdc.complex"><span class="d_inlinecode donthyphenate notranslate">complex</span><tæ><vîi><li> <a href="core_stdc_ctype.html"�4itle="core.stdc.ctype"><span class="d_inlinecode donthyphenate notranslate">ctype<ztpan></a></li><li> �!�!a href="core_stdc_errno.html" title="core.stdc.errno"><span class="d_inlinecode donthyphenate notranslate">errno</span><tæ><vîi><li> <a href="core_stdc_fenv.html" title="core.stdc.fenv"><span class="d_inlinecode donthyphenate notranslate">fenv</span><tæ><vîi><li> <a href="core_stdc_float_.html" title="core.stdc.float_"><span class="d_inlinecode donthyphenate notranslate">float_</span><tæ><vîi><li> <a href="core_stdc_inttypes.html" title="core.stdc.inttypes"><span class="d_inlinecode donthyphenate notranslate">inttypes</span><tæ><vîi><li> <a href="core_stdc_limits.html" title="core.stdc.limits"><span class="d_inlinecode donthyphenate notranslate">limits</span><tæ><vîi><li> <a href="core_stdc_locale.html" title="core.stdc.locale"><span class="d_inlinecode donthyphenate notranslate">locale</span><tæ><vîi><li> <a href="core_stdc_math.html" title="core.stdc.math"><span class="d_inlinecode donthyphenate notranslate">math</span><tæ><vîi><li> <a href="core_stdc_signal.html" title="core.stdc.signal"><span class="d_inlinecode donthyphenate notranslate">signal</span><tæ><vîi><li> <a href="core_stdc_stdarg.html" title="core.stdc.stdarg"><span class="d_inlinecode donthyphenate notranslate">stdarg</span><tæ><vîi><li> <a href="core_stdc_stdatomic.html"�4itle="core.stdc.stdatomic"><span class="d_inlinecode donthyphenate notranslate">stdatomic<ztpan></a></li><li> �!�!a href="core_stdc_stddef.html"�4itle="core.stdc.stddef"><span class="d_inlinecode donthyphenate notranslate">stddef<ztpan></a></li><li> �!�!a href="core_stdc_stdint.html"�4itle="core.stdc.stdint"><span class="d_inlinecode donthyphenate notranslate">stdint<ztpan></a></li><li> �!�!a href="core_stdc_stdio.html" title="core.stdc.stdio"><span class="d_inlinecode donthyphenate notranslate">stdio</span><tæ><vîi><li> <a href="core_stdc_stdlib.html" title="core.stdc.stdlib"><span class="d_inlinecode donthyphenate notranslate">stdlib</span><tæ><vîi><li> <a href="core_stdc_string.html" title="core.stdc.string"><span class="d_inlinecode donthyphenate notranslate">string</span><tæ><vîi><li> <a href="core_stdc_tgmath.html" title="core.stdc.tgmath"><span class="d_inlinecode donthyphenate notranslate">tgmath</span><tæ><vîi><li> <a href="core_stdc_time.html" title="core.stdc.time"><span class="d_inlinecode donthyphenate notranslate">time</span><tæ><vîi><li> <a href="core_stdc_wchar_.html" title="core.stdc.wchar_"><span class="d_inlinecode donthyphenate notranslate">wchar_</span><tæ><vîi><li> <a href="core_stdc_wctype.html" title="core.stdc.wctype"><span class="d_inlinecode donthyphenate notranslate">wctype</span><tæ> </li><zùl></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">stdcpp</span><vv7><ul><li> <a href="core_stdcpp_allocator.html"�4itle="core.stdcpp.allocator"><span class="d_inlinecode donthyphenate notranslate">allocator<ztpan></a></li><li> �!�!a href="core_stdcpp_array.html" title="core.stdcpp.array"><span class="d_inlinecode donthyphenate notranslate">array</span><tæ><vîi><li> <a href="core_stdcpp_exception.html"�4itle="core.stdcpp.exception"><span class="d_inlinecode donthyphenate notranslate">exception<ztpan></a></li><li> �!�!a href="core_stdcpp_memory.html"�4itle="core.stdcpp.memory"><span class="d_inlinecode donthyphenate notranslate">memory<ztpan></a></li><li> �!�!a href="core_stdcpp_new_.html"�4itle="core.stdcpp.new_"><span class="d_inlinecode donthyphenate notranslate">new_<ztpan></a></li><li> �!�!a href="core_stdcpp_string.html"�4itle="core.stdcpp.string"><span class="d_inlinecode donthyphenate notranslate">string<ztpan></a></li><li> �!�!a href="core_stdcpp_string_view.html" title="core.stdcpp.string_view"><span class="d_inlinecode donthyphenate notranslate">string_view</span><tæ><vîi><li> <a href="core_stdcpp_type_traits.html"�4itle="core.stdcpp.type_traits"><span class="d_inlinecode donthyphenate notranslate">type_traits<ztpan></a></li><li> �!�!a href="core_stdcpp_typeinfo.html"�4itle="core.stdcpp.typeinfo"><span class="d_inlinecode donthyphenate notranslate">typeinfo<ztpan></a></li><li> �!�!a href="core_stdcpp_utility.html" title="core.stdcpp.utility"><span class="d_inlinecode donthyphenate notranslate">utility</span><tæ><vîi><li> <a href="core_stdcpp_vector.html" title="core.stdcpp.vector"><span class="d_inlinecode donthyphenate notranslate">vector</span><tæ><vîi><li> <a href="core_stdcpp_xutility.html" title="core.stdcpp.xutility"><span class="d_inlinecode donthyphenate notranslate">xutility</span><tæ> </li><zùl></li><li> �!�!a href="core_sync.html" title="core.sync"><span class="d_inlinecode donthyphenate notranslate">sync<ztpan></a><ul><li> <a href="core_sync_barrier.html"�4itle="core.sync.barrier"><span class="d_inlinecode donthyphenate notranslate">barrier<ztpan></a></li><li> �!�!a href="core_sync_condition.html" title="core.sync.condition"><span class="d_inlinecode donthyphenate notranslate">condition</span><tæ><vîi><li> <a href="core_sync_config.html" title="core.sync.config"><span class="d_inlinecode donthyphenate notranslate">config</span><tæ><vîi><li> <a href="core_sync_event.html"�4itle="core.sync.event"><span class="d_inlinecode donthyphenate notranslate">event<ztpan></a></li><li> �!�!a href="core_sync_exception.html" title="core.sync.exception"><span class="d_inlinecode donthyphenate notranslate">exception</span><tæ><vîi><li> <a href="core_sync_mutex.html"�4itle="core.sync.mutex"><span class="d_inlinecode donthyphenate notranslate">mutex<ztpan></a></li><li> �!�!a href="core_sync_rwmutex.html" title="core.sync.rwmutex"><span class="d_inlinecode donthyphenate notranslate">rwmutex</span><tæ><vîi><li> <a href="core_sync_semaphore.html"�4itle="core.sync.semaphore"><span class="d_inlinecode donthyphenate notranslate">semaphore<ztpan></a> �!�!vîi></ul><vîi><li> <a href="core_thread.html"�4itle="core.thread"><span class="d_inlinecode donthyphenate notranslate">thread</span><tæ><ul><li> �!�!a href="core_thread_context.html" title="core.thread.context"><span class="d_inlinecode donthyphenate notranslate">context</span><tæ><vîi><li> <a href="core_thread_fiber.html"�4itle="core.thread.fiber"><span class="d_inlinecode donthyphenate notranslate">fiber<ztpan></a><ul><li> <a href="core_thread_fiber_base.html" title="core.thread.fiber.base"><span class="d_inlinecode donthyphenate notranslate">base</span><tæ> </li><zùl></li><li> �!�!a href="core_thread_osthread.html"�4itle="core.thread.osthread"><span class="d_inlinecode donthyphenate notranslate">osthread<ztpan></a></li><li> �!�!a href="core_thread_threadbase.html"�4itle="core.thread.threadbase"><span class="d_inlinecode donthyphenate notranslate">threadbase<ztpan></a></li><li> �!�!a href="core_thread_threadgroup.html" title="core.thread.threadgroup"><span class="d_inlinecode donthyphenate notranslate">threadgroup</span><tæ><vîi><li> <a href="core_thread_types.html"�4itle="core.thread.types"><span class="d_inlinecode donthyphenate notranslate">types<ztpan></a> �!�!vîi></ul><vîi><li> <a href="core_time.html"�4itle="core.time"><span class="d_inlinecode donthyphenate notranslate">time</span><tæ><vîi><li> <a href="core_vararg.html"�4itle="core.vararg"><span class="d_inlinecode donthyphenate notranslate">vararg</span><tæ><vîi><li> <a href="core_volatile.html"�4itle="core.volatile"><span class="d_inlinecode donthyphenate notranslate">volatile</span><tæ> </li><zùl> <vîi> <div class="modlist-internal-separator">Internal API<u(iv> <li class='expand-container modlist-submenu-core'><a class='expand-toggle' href='#'><span><em class="tt">core</em><ztpan></a> <ul><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">internal</span><vv7><ul><li> <h7><span class="d_inlinecode donthyphenate notranslate">array</span><vv7><ul><li> <a href="core_internal_array_appending.html"�4itle="core.internal.array.appending"><span class="d_inlinecode donthyphenate notranslate">appending<ztpan></a></li><li> �!�!a href="core_internal_array_arrayassign.html" title="core.internal.array.arrayassign"><span class="d_inlinecode donthyphenate notranslate">arrayassign</span><tæ><vîi><li> <a href="core_internal_array_capacity.html" title="core.internal.array.capacity"><span class="d_inlinecode donthyphenate notranslate">capacity</span><tæ><vîi><li> <a href="core_internal_array_casting.html"�4itle="core.internal.array.casting"><span class="d_inlinecode donthyphenate notranslate">casting<ztpan></a></li><li> �!�!a href="core_internal_array_comparison.html"�4itle="core.internal.array.comparison"><span class="d_inlinecode donthyphenate notranslate">comparison<ztpan></a></li><li> �!�!a href="core_internal_array_concatenation.html" title="core.internal.array.concatenation"><span class="d_inlinecode donthyphenate notranslate">concatenation</span><tæ><vîi><li> <a href="core_internal_array_construction.html" title="core.internal.array.construction"><span class="d_inlinecode donthyphenate notranslate">construction</span><tæ><vîi><li> <a href="core_internal_array_duplication.html"�4itle="core.internal.array.duplication"><span class="d_inlinecode donthyphenate notranslate">duplication<ztpan></a></li><li> �!�!a href="core_internal_array_equality.html"�4itle="core.internal.array.equality"><span class="d_inlinecode donthyphenate notranslate">equality<ztpan></a></li><li> �!�!a href="core_internal_array_operations.html"�4itle="core.internal.array.operations"><span class="d_inlinecode donthyphenate notranslate">operations<ztpan></a></li><li> �!�!a href="core_internal_array_utils.html" title="core.internal.array.utils"><span class="d_inlinecode donthyphenate notranslate">utils</span><tæ> </li><zùl></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">util</span><vv7><ul><li> <a href="core_internal_util_array.html" title="core.internal.util.array"><span class="d_inlinecode donthyphenate notranslate">array<ztpan></a></li><li> �!�!a href="core_internal_util_math.html" title="core.internal.util.math"><span class="d_inlinecode donthyphenate notranslate">math<ztpan></a> �!�!vîi></ul> </li><zùl> <vîi></ul> </li> <li class='expand-container modlist-submenu-dmd'><a class='expand-toggle' href='#'><span><em class="tt">dmd</em><ztpan></a> <ul><li> �!�!a href="dmd_access.html"�4itle="dmd.access"><span class="d_inlinecode donthyphenate notranslate">access<ztpan></a></li><li> �!�!a href="dmd_aggregate.html" title="dmd.aggregate"><span class="d_inlinecode donthyphenate notranslate">aggregate</span><tæ><vîi><li> <a href="dmd_aliasthis.html"�4itle="dmd.aliasthis"><span class="d_inlinecode donthyphenate notranslate">aliasthis<ztpan></a></li><li> �!�!a href="dmd_argtypes_aarch64.html"�4itle="dmd.argtypes_aarch64"><span class="d_inlinecode donthyphenate notranslate">argtypes_aarch64<ztpan></a></li><li> �!�!a href="dmd_argtypes_sysv_x64.html" title="dmd.argtypes_sysv_x64"><span class="d_inlinecode donthyphenate notranslate">argtypes_sysv_x64</span><tæ><vîi><li> <a href="dmd_argtypes_x86.html" title="dmd.argtypes_x86"><span class="d_inlinecode donthyphenate notranslate">argtypes_x86</span><tæ><vîi><li> <a href="dmd_arrayop.html"�4itle="dmd.arrayop"><span class="d_inlinecode donthyphenate notranslate">arrayop<ztpan></a></li><li> �!�!a href="dmd_arraytypes.html"�4itle="dmd.arraytypes"><span class="d_inlinecode donthyphenate notranslate">arraytypes<ztpan></a></li><li> �!�!a href="dmd_ast_node.html"�4itle="dmd.ast_node"><span class="d_inlinecode donthyphenate notranslate">ast_node<ztpan></a></li><li> �!�!a href="dmd_astbase.html" title="dmd.astbase"><span class="d_inlinecode donthyphenate notranslate">astbase</span><tæ><vîi><li> <a href="dmd_astcodegen.html" title="dmd.astcodegen"><span class="d_inlinecode donthyphenate notranslate">astcodegen</span><tæ><vîi><li> <a href="dmd_astenums.html" title="dmd.astenums"><span class="d_inlinecode donthyphenate notranslate">astenums</span><tæ><vîi><li> <a href="dmd_asttypename.html"�4itle="dmd.asttypename"><span class="d_inlinecode donthyphenate notranslate">asttypename<ztpan></a></li><li> �!�!a href="dmd_attrib.html"�4itle="dmd.attrib"><span class="d_inlinecode donthyphenate notranslate">attrib<ztpan></a></li><li> �!�!a href="dmd_attribsem.html" title="dmd.attribsem"><span class="d_inlinecode donthyphenate notranslate">attribsem</span><tæ><vîi><li> <h7><span class="d_inlinecode donthyphenate notranslate">backend</span><vv7><ul><li> <a href="dmd_backend_aarray.html" title="dmd.backend.aarray"><span class="d_inlinecode donthyphenate notranslate">aarray</span><tæ><vîi><li> <h7><span class="d_inlinecode donthyphenate notranslate">arm</span><vv7><ul><li> <a href="dmd_backend_arm_cod1.html" title="dmd.backend.arm.cod1"><span class="d_inlinecode donthyphenate notranslate">cod1</span><tæ><vîi><li> <a href="dmd_backend_arm_cod�(‘Ñ�)html" title="dmd.backend.arm.cod�(N �)><span class="d_inlinecode donthyphenate notranslate">cod2</span><tæ><vîi><li> <a href="dmd_backend_arm_cod0Ô0¢0¹0È0ëhtml" title="dmd.backend.arm.cod0»0ó0Á><span class="d_inlinecode donthyphenate notranslate">cod3</span><tæ><vîi><li> <a href="dmd_backend_arm_cod4.html" title="dmd.backend.arm.cod4"><span class="d_inlinecode donthyphenate notranslate">cod4</span><tæ><vîi><li> <a href="dmd_backend_arm_disasmarm.html"�4itle="dmd.backend.arm.disasmarm"><span class="d_inlinecode donthyphenate notranslate">disasmarm<ztpan></a></li><li> �!�!a href="dmd_backend_arm_instr.html" title="dmd.backend.arm.instr"><span class="d_inlinecode donthyphenate notranslate">instr</span><tæ> </li><zùl></li><li> �!�!a href="dmd_backend_backconfig.html"�4itle="dmd.backend.backconfig"><span class="d_inlinecode donthyphenate notranslate">backconfig<ztpan></a></li><li> �!�!a href="dmd_backend_barray.html"�4itle="dmd.backend.barray"><span class="d_inlinecode donthyphenate notranslate">barray<ztpan></a></li><li> �!�!a href="dmd_backend_bcomplex.html"�4itle="dmd.backend.bcomplex"><span class="d_inlinecode donthyphenate notranslate">bcomplex<ztpan></a></li><li> �!�!a href="dmd_backend_blockopt.html"�4itle="dmd.backend.blockopt"><span class="d_inlinecode donthyphenate notranslate">blockopt<ztpan></a></li><li> �!�!a href="dmd_backend_cc.html"�4itle="dmd.backend.cc"><span class="d_inlinecode donthyphenate notranslate">cc<ztpan></a></li><li> �!�!a href="dmd_backend_cdef.html"�4itle="dmd.backend.cdef"><span class="d_inlinecode donthyphenate notranslate">cdef<ztpan></a></li><li> �!�!a href="dmd_backend_cg.html"�4itle="dmd.backend.cg"><span class="d_inlinecode donthyphenate notranslate">cg<ztpan></a></li><li> �!�!a href="dmd_backend_cgcs.html"�4itle="dmd.backend.cgcs"><span class="d_inlinecode donthyphenate notranslate">cgcs<ztpan></a></li><li> �!�!a href="dmd_backend_cgcse.html" title="dmd.backend.cgcse"><span class="d_inlinecode donthyphenate notranslate">cgcse</span><tæ><vîi><li> <a href="dmd_backend_cgcv.html" title="dmd.backend.cgcv"><span class="d_inlinecode donthyphenate notranslate">cgcv</span><tæ><vîi><li> <a href="dmd_backend_cgelem.html" title="dmd.backend.cgelem"><span class="d_inlinecode donthyphenate notranslate">cgelem</span><tæ><vîi><li> <a href="dmd_backend_cgen.html" title="dmd.backend.cgen"><span class="d_inlinecode donthyphenate notranslate">cgen</span><tæ><vîi><li> <a href="dmd_backend_cgsched.html"�4itle="dmd.backend.cgsched"><span class="d_inlinecode donthyphenate notranslate">cgsched<ztpan></a></li><li> �!�!a href="dmd_backend_code.html"�4itle="dmd.backend.code"><span class="d_inlinecode donthyphenate notranslate">code<ztpan></a></li><li> �!�!a href="dmd_backend_codebuilder.html" title="dmd.backend.codebuilder"><span class="d_inlinecode donthyphenate notranslate">codebuilder</span><tæ><vîi><li> <a href="dmd_backend_cv4.html"�4itle="dmd.backend.cv4"><span class="d_inlinecode donthyphenate notranslate">cv4<ztpan></a></li><li> �!�!a href="dmd_backend_cv8.html" title="dmd.backend.cv8"><span class="d_inlinecode donthyphenate notranslate">cv8</span><tæ><vîi><li> <a href="dmd_backend_dcgcv.html"�4itle="dmd.backend.dcgcv"><span class="d_inlinecode donthyphenate notranslate">dcgcv<ztpan></a></li><li> �!�!a href="dmd_backend_dcode.html" title="dmd.backend.dcode"><span class="d_inlinecode donthyphenate notranslate">dcode</span><tæ><vîi><li> <a href="dmd_backend_debugprint.html" title="dmd.backend.debugprint"><span class="d_inlinecode donthyphenate notranslate">debugprint</span><tæ><vîi><li> <a href="dmd_backend_divcoeff.html" title="dmd.backend.divcoeff"><span class="d_inlinecode donthyphenate notranslate">divcoeff</span><tæ><vîi><li> <a href="dmd_backend_dlist.html"�4itle="dmd.backend.dlist"><span class="d_inlinecode donthyphenate notranslate">dlist<ztpan></a></li><li> �!�!a href="dmd_backend_dout.html"�4itle="dmd.backend.dout"><span class="d_inlinecode donthyphenate notranslate">dout<ztpan></a></li><li> �!�!a href="dmd_backend_drtlsym.html" title="dmd.backend.drtlsym"><span class="d_inlinecode donthyphenate notranslate">drtlsym</span><tæ><vîi><li> <a href="dmd_backend_dt.html" title="dmd.backend.dt"><span class="d_inlinecode donthyphenate notranslate">dt</span><tæ><vîi><li> <a href="dmd_backend_dtype.html"�4itle="dmd.backend.dtype"><span class="d_inlinecode donthyphenate notranslate">dtype<ztpan></a></li><li> �!�!a href="dmd_backend_dvarstats.html" title="dmd.backend.dvarstats"><span class="d_inlinecode donthyphenate notranslate">dvarstats</span><tæ><vîi><li> <a href="dmd_backend_dvec.html" title="dmd.backend.dvec"><span class="d_inlinecode donthyphenate notranslate">dvec</span><tæ><vîi><li> <a href="dmd_backend_dwarf.html"�4itle="dmd.backend.dwarf"><span class="d_inlinecode donthyphenate notranslate">dwarf<ztpan></a></li><li> �!�!a href="dmd_backend_dwarf2.html"�4itle="dmd.backend.dwarf2"><span class="d_inlinecode donthyphenate notranslate">dwarf�(vã�)ztpan></a></li><li> �!�!a href="dmd_backend_dwarfdbginf.html" title="dmd.backend.dwarfdbginf"><span class="d_inlinecode donthyphenate notranslate">dwarfdbginf</span><tæ><vîi><li> <a href="dmd_backend_dwarfeh.html"�4itle="dmd.backend.dwarfeh"><span class="d_inlinecode donthyphenate notranslate">dwarfeh<ztpan></a></li><li> �!�!a href="dmd_backend_ee.html"�4itle="dmd.backend.ee"><span class="d_inlinecode donthyphenate notranslate">ee<ztpan></a></li><li> �!�!a href="dmd_backend_eh.html"�4itle="dmd.backend.eh"><span class="d_inlinecode donthyphenate notranslate">eh<ztpan></a></li><li> �!�!a href="dmd_backend_el.html"�4itle="dmd.backend.el"><span class="d_inlinecode donthyphenate notranslate">el<ztpan></a></li><li> �!�!a href="dmd_backend_elem.html"�4itle="dmd.backend.elem"><span class="d_inlinecode donthyphenate notranslate">elem<ztpan></a></li><li> �!�!a href="dmd_backend_elfobj.html"�4itle="dmd.backend.elfobj"><span class="d_inlinecode donthyphenate notranslate">elfobj<ztpan></a></li><li> �!�!a href="dmd_backend_elpicpie.html"�4itle="dmd.backend.elpicpie"><span class="d_inlinecode donthyphenate notranslate">elpicpie<ztpan></a></li><li> �!�!a href="dmd_backend_evalu8.html"�4itle="dmd.backend.evalu8"><span class="d_inlinecode donthyphenate notranslate">evalu8<ztpan></a></li><li> �!�!a href="dmd_backend_fp.html"�4itle="dmd.backend.fp"><span class="d_inlinecode donthyphenate notranslate">fp<ztpan></a></li><li> �!�!a href="dmd_backend_gdag.html"�4itle="dmd.backend.gdag"><span class="d_inlinecode donthyphenate notranslate">gdag<ztpan></a></li><li> �!�!a href="dmd_backend_gflow.html" title="dmd.backend.gflow"><span class="d_inlinecode donthyphenate notranslate">gflow</span><tæ><vîi><li> <a href="dmd_backend_global.html" title="dmd.backend.global"><span class="d_inlinecode donthyphenate notranslate">global</span><tæ><vîi><li> <a href="dmd_backend_glocal.html" title="dmd.backend.glocal"><span class="d_inlinecode donthyphenate notranslate">glocal</span><tæ><vîi><li> <a href="dmd_backend_gloop.html"�4itle="dmd.backend.gloop"><span class="d_inlinecode donthyphenate notranslate">gloop<ztpan></a></li><li> �!�!a href="dmd_backend_go.html"�4itle="dmd.backend.go"><span class="d_inlinecode donthyphenate notranslate">go<ztpan></a></li><li> �!�!a href="dmd_backend_goh.html" title="dmd.backend.goh"><span class="d_inlinecode donthyphenate notranslate">goh</span><tæ><vîi><li> <a href="dmd_backend_gother.html" title="dmd.backend.gother"><span class="d_inlinecode donthyphenate notranslate">gother</span><tæ><vîi><li> <a href="dmd_backend_gsroa.html"�4itle="dmd.backend.gsroa"><span class="d_inlinecode donthyphenate notranslate">gsroa<ztpan></a></li><li> �!�!a href="dmd_backend_iasm.html"�4itle="dmd.backend.iasm"><span class="d_inlinecode donthyphenate notranslate">iasm<ztpan></a></li><li> �!�!a href="dmd_backend_inliner.html" title="dmd.backend.inliner"><span class="d_inlinecode donthyphenate notranslate">inliner</span><tæ><vîi><li> <a href="dmd_backend_mach.html" title="dmd.backend.mach"><span class="d_inlinecode donthyphenate notranslate">mach</span><tæ><vîi><li> <a href="dmd_backend_machobj.html"�4itle="dmd.backend.machobj"><span class="d_inlinecode donthyphenate notranslate">machobj<ztpan></a></li><li> �!�!a href="dmd_backend_melf.html"�4itle="dmd.backend.melf"><span class="d_inlinecode donthyphenate notranslate">melf<ztpan></a></li><li> �!�!a href="dmd_backend_mem.html" title="dmd.backend.mem"><span class="d_inlinecode donthyphenate notranslate">mem</span><tæ><vîi><li> <a href="dmd_backend_mscoff.html" title="dmd.backend.mscoff"><span class="d_inlinecode donthyphenate notranslate">mscoff</span><tæ><vîi><li> <a href="dmd_backend_mscoffobj.html"�4itle="dmd.backend.mscoffobj"><span class="d_inlinecode donthyphenate notranslate">mscoffobj<ztpan></a></li><li> �!�!a href="dmd_backend_obj.html" title="dmd.backend.obj"><span class="d_inlinecode donthyphenate notranslate">obj</span><tæ><vîi><li> <a href="dmd_backend_oper.html" title="dmd.backend.oper"><span class="d_inlinecode donthyphenate notranslate">oper</span><tæ><vîi><li> <a href="dmd_backend_pdata.html"�4itle="dmd.backend.pdata"><span class="d_inlinecode donthyphenate notranslate">pdata<ztpan></a></li><li> �!�!a href="dmd_backend_ptrntab.html" title="dmd.backend.ptrntab"><span class="d_inlinecode donthyphenate notranslate">ptrntab</span><tæ><vîi><li> <a href="dmd_backend_rtlsym.html" title="dmd.backend.rtlsym"><span class="d_inlinecode donthyphenate notranslate">rtlsym</span><tæ><vîi><li> <a href="dmd_backend_symbol.html" title="dmd.backend.symbol"><span class="d_inlinecode donthyphenate notranslate">symbol</span><tæ><vîi><li> <a href="dmd_backend_symtab.html" title="dmd.backend.symtab"><span class="d_inlinecode donthyphenate notranslate">symtab</span><tæ><vîi><li> <a href="dmd_backend_ty.html" title="dmd.backend.ty"><span class="d_inlinecode donthyphenate notranslate">ty</span><tæ><vîi><li> <a href="dmd_backend_type.html" title="dmd.backend.type"><span class="d_inlinecode donthyphenate notranslate">type</span><tæ><vîi><li> <a href="dmd_backend_util2.html"�4itle="dmd.backend.util�(N �)><span class="d_inlinecode donthyphenate notranslate">util�(vã�)ztpan></a></li><li> �!�!a href="dmd_backend_var.html" title="dmd.backend.var"><span class="d_inlinecode donthyphenate notranslate">var</span><tæ><vîi><li> <h7><span class="d_inlinecode donthyphenate notranslate">x86</span><vv7><ul><li> <a href="dmd_backend_x86_cg87.html" title="dmd.backend.x86.cg87"><span class="d_inlinecode donthyphenate notranslate">cg87</span><tæ><vîi><li> <a href="dmd_backend_x86_cgcod.html"�4itle="dmd.backend.x86.cgcod"><span class="d_inlinecode donthyphenate notranslate">cgcod<ztpan></a></li><li> �!�!a href="dmd_backend_x86_cgreg.html" title="dmd.backend.x86.cgreg"><span class="d_inlinecode donthyphenate notranslate">cgreg</span><tæ><vîi><li> <a href="dmd_backend_x86_cgxmm.html"�4itle="dmd.backend.x86.cgxmm"><span class="d_inlinecode donthyphenate notranslate">cgxmm<ztpan></a></li><li> �!�!a href="dmd_backend_x86_cod1.html"�4itle="dmd.backend.x86.cod1"><span class="d_inlinecode donthyphenate notranslate">cod²ztpan></a></li><li> �!�!a href="dmd_backend_x86_cod2.html"�4itle="dmd.backend.x86.cod2"><span class="d_inlinecode donthyphenate notranslate">cod�(vã�)ztpan></a></li><li> �!�!a href="dmd_backend_x86_cod3.html"�4itle="dmd.backend.x86.cod3"><span class="d_inlinecode donthyphenate notranslate">cod0Ù0ü0¿ztpan></a></li><li> �!�!a href="dmd_backend_x86_cod4.html"�4itle="dmd.backend.x86.cod4"><span class="d_inlinecode donthyphenate notranslate">cod4<ztpan></a></li><li> �!�!a href="dmd_backend_x86_cod5.html"�4itle="dmd.backend.x86.cod5"><span class="d_inlinecode donthyphenate notranslate">cod5<ztpan></a></li><li> �!�!a href="dmd_backend_x86_code_x86.html"�4itle="dmd.backend.x86.code_x86"><span class="d_inlinecode donthyphenate notranslate">code_x86<ztpan></a></li><li> �!�!a href="dmd_backend_x86_disasm86.html"�4itle="dmd.backend.x86.disasm86"><span class="d_inlinecode donthyphenate notranslate">disasm86<ztpan></a></li><li> �!�!a href="dmd_backend_x86_nteh.html"�4itle="dmd.backend.x86.nteh"><span class="d_inlinecode donthyphenate notranslate">nteh<ztpan></a></li><li> �!�!a href="dmd_backend_x86_xmm.html" title="dmd.backend.x86.xmm"><span class="d_inlinecode donthyphenate notranslate">xmm</span><tæ> </li><zùl> �!�!vîi></ul><vîi><li> <a href="dmd_blockexit.html"�4itle="dmd.blockexit"><span class="d_inlinecode donthyphenate notranslate">blockexit<ztpan></a></li><li> �!�!a href="dmd_builtin.html" title="dmd.builtin"><span class="d_inlinecode donthyphenate notranslate">builtin</span><tæ><vîi><li> <a href="dmd_canthrow.html" title="dmd.canthrow"><span class="d_inlinecode donthyphenate notranslate">canthrow</span><tæ><vîi><li> <a href="dmd_chkformat.html"�4itle="dmd.chkformat"><span class="d_inlinecode donthyphenate notranslate">chkformat<ztpan></a></li><li> �!�!a href="dmd_cli.html" title="dmd.cli"><span class="d_inlinecode donthyphenate notranslate">cli</span><tæ><vîi><li> <a href="dmd_clone.html"�4itle="dmd.clone"><span class="d_inlinecode donthyphenate notranslate">clone<ztpan></a></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">common</span><vv7><ul><li> <a href="dmd_common_bitfields.html" title="dmd.common.bitfields"><span class="d_inlinecode donthyphenate notranslate">bitfields<ztpan></a></li><li> �!�!a href="dmd_common_blake0Ô0¢0¹0È0ëhtml" title="dmd.common.blake3"><span class="d_inlinecode donthyphenate notranslate">blake0Ù0ü0¿ztpan></a></li><li> �!�!a href="dmd_common_charactertables.html"�4itle="dmd.common.charactertables"><span class="d_inlinecode donthyphenate notranslate">charactertables</span><tæ><vîi><li> <a href="dmd_common_file.html"�4itle="dmd.common.file"><span class="d_inlinecode donthyphenate notranslate">file</span><tæ><vîi><li> <a href="dmd_common_identifiertables.html"�4itle="dmd.common.identifiertables"><span class="d_inlinecode donthyphenate notranslate">identifiertables</span><tæ><vîi><li> <a href="dmd_common_int1�(R´�).html"�4itle="dmd.common.int8"><span class="d_inlinecode donthyphenate notranslate">int1�(R´�)</span><tæ><vîi><li> <a href="dmd_common_outbuffer.html" title="dmd.common.outbuffer"><span class="d_inlinecode donthyphenate notranslate">outbuffer<ztpan></a></li><li> �!�!a href="dmd_common_smallbuffer.html"�4itle="dmd.common.smallbuffer"><span class="d_inlinecode donthyphenate notranslate">smallbuffer</span><tæ> </li><zùl></li><li> �!�!a href="dmd_compiler.html"�4itle="dmd.compiler"><span class="d_inlinecode donthyphenate notranslate">compiler<ztpan></a></li><li> �!�!a href="dmd_cond.html"�4itle="dmd.cond"><span class="d_inlinecode donthyphenate notranslate">cond<ztpan></a></li><li> �!�!a href="dmd_console.html" title="dmd.console"><span class="d_inlinecode donthyphenate notranslate">console</span><tæ><vîi><li> <a href="dmd_constfold.html"�4itle="dmd.constfold"><span class="d_inlinecode donthyphenate notranslate">constfold<ztpan></a></li><li> �!�!a href="dmd_cparse.html"�4itle="dmd.cparse"><span class="d_inlinecode donthyphenate notranslate">cparse<ztpan></a></li><li> �!�!a href="dmd_cpreprocess.html" title="dmd.cpreprocess"><span class="d_inlinecode donthyphenate notranslate">cpreprocess</span><tæ><vîi><li> <a href="dmd_ctfeexpr.html" title="dmd.ctfeexpr"><span class="d_inlinecode donthyphenate notranslate">ctfeexpr</span><tæ><vîi><li> <a href="dmd_ctorflow.html" title="dmd.ctorflow"><span class="d_inlinecode donthyphenate notranslate">ctorflow</span><tæ><vîi><li> <a href="dmd_cxxfrontend.html"�4itle="dmd.cxxfrontend"><span class="d_inlinecode donthyphenate notranslate">cxxfrontend<ztpan></a></li><li> �!�!a href="dmd_dcast.html" title="dmd.dcast"><span class="d_inlinecode donthyphenate notranslate">dcast</span><tæ><vîi><li> <a href="dmd_dclass.html" title="dmd.dclass"><span class="d_inlinecode donthyphenate notranslate">dclass</span><tæ><vîi><li> <a href="dmd_declaration.html"�4itle="dmd.declaration"><span class="d_inlinecode donthyphenate notranslate">declaration<ztpan></a></li><li> �!�!a href="dmd_delegatize.html"�4itle="dmd.delegatize"><span class="d_inlinecode donthyphenate notranslate">delegatize<ztpan></a></li><li> �!�!a href="dmd_denum.html" title="dmd.denum"><span class="d_inlinecode donthyphenate notranslate">denum</span><tæ><vîi><li> <a href="dmd_deps.html" title="dmd.deps"><span class="d_inlinecode donthyphenate notranslate">deps</span><tæ><vîi><li> <a href="dmd_dimport.html"�4itle="dmd.dimport"><span class="d_inlinecode donthyphenate notranslate">dimport<ztpan></a></li><li> �!�!a href="dmd_dinifile.html"�4itle="dmd.dinifile"><span class="d_inlinecode donthyphenate notranslate">dinifile<ztpan></a></li><li> �!�!a href="dmd_dinterpret.html"�4itle="dmd.dinterpret"><span class="d_inlinecode donthyphenate notranslate">dinterpret<ztpan></a></li><li> �!�!a href="dmd_dmacro.html"�4itle="dmd.dmacro"><span class="d_inlinecode donthyphenate notranslate">dmacro<ztpan></a></li><li> �!�!a href="dmd_dmdparams.html" title="dmd.dmdparams"><span class="d_inlinecode donthyphenate notranslate">dmdparams</span><tæ><vîi><li> <a href="dmd_dmodule.html"�4itle="dmd.dmodule"><span class="d_inlinecode donthyphenate notranslate">dmodule<ztpan></a></li><li> �!�!a href="dmd_dmsc.html"�4itle="dmd.dmsc"><span class="d_inlinecode donthyphenate notranslate">dmsc<ztpan></a></li><li> �!�!a href="dmd_doc.html" title="dmd.doc"><span class="d_inlinecode donthyphenate notranslate">doc</span><tæ><vîi><li> <a href="dmd_dscope.html" title="dmd.dscope"><span class="d_inlinecode donthyphenate notranslate">dscope</span><tæ><vîi><li> <a href="dmd_dstruct.html"�4itle="dmd.dstruct"><span class="d_inlinecode donthyphenate notranslate">dstruct<ztpan></a></li><li> �!�!a href="dmd_dsymbol.html" title="dmd.dsymbol"><span class="d_inlinecode donthyphenate notranslate">dsymbol</span><tæ><vîi><li> <a href="dmd_dsymbolsem.html" title="dmd.dsymbolsem"><span class="d_inlinecode donthyphenate notranslate">dsymbolsem</span><tæ><vîi><li> <a href="dmd_dtemplate.html"�4itle="dmd.dtemplate"><span class="d_inlinecode donthyphenate notranslate">dtemplate<ztpan></a></li><li> �!�!a href="dmd_dtoh.html"�4itle="dmd.dtoh"><span class="d_inlinecode donthyphenate notranslate">dtoh<ztpan></a></li><li> �!�!a href="dmd_dversion.html"�4itle="dmd.dversion"><span class="d_inlinecode donthyphenate notranslate">dversion<ztpan></a></li><li> �!�!a href="dmd_entity.html"�4itle="dmd.entity"><span class="d_inlinecode donthyphenate notranslate">entity<ztpan></a></li><li> �!�!a href="dmd_enumsem.html" title="dmd.enumsem"><span class="d_inlinecode donthyphenate notranslate">enumsem</span><tæ><vîi><li> <a href="dmd_errors.html" title="dmd.errors"><span class="d_inlinecode donthyphenate notranslate">errors</span><tæ><vîi><li> <a href="dmd_errorsink.html"�4itle="dmd.errorsink"><span class="d_inlinecode donthyphenate notranslate">errorsink<ztpan></a></li><li> �!�!a href="dmd_escape.html"�4itle="dmd.escape"><span class="d_inlinecode donthyphenate notranslate">escape<ztpan></a></li><li> �!�!a href="dmd_expression.html"�4itle="dmd.expression"><span class="d_inlinecode donthyphenate notranslate">expression<ztpan></a></li><li> �!�!a href="dmd_expressionsem.html" title="dmd.expressionsem"><span class="d_inlinecode donthyphenate notranslate">expressionsem</span><tæ><vîi><li> <a href="dmd_file_manager.html" title="dmd.file_manager"><span class="d_inlinecode donthyphenate notranslate">file_manager</span><tæ><vîi><li> <a href="dmd_frontend.html" title="dmd.frontend"><span class="d_inlinecode donthyphenate notranslate">frontend</span><tæ><vîi><li> <a href="dmd_func.html" title="dmd.func"><span class="d_inlinecode donthyphenate notranslate">func</span><tæ><vîi><li> <a href="dmd_funcsem.html"�4itle="dmd.funcsem"><span class="d_inlinecode donthyphenate notranslate">funcsem<ztpan></a></li><li> �!�!a href="dmd_globals.html" title="dmd.globals"><span class="d_inlinecode donthyphenate notranslate">globals</span><tæ><vîi><li> <a href="dmd_glue.html" title="dmd.glue"><span class="d_inlinecode donthyphenate notranslate">glue</span><tæ><ul><li> �!�!a href="dmd_glue_er.html" title="dmd.glue.e2ir"><span class="d_inlinecode donthyphenate notranslate">er<ztpan></a></li><li> �!�!a href="dmd_glue_objc.html" title="dmd.glue.objc"><span class="d_inlinecode donthyphenate notranslate">objc<ztpan></a></li><li> �!�!a href="dmd_glue_sr.html" title="dmd.glue.s2ir"><span class="d_inlinecode donthyphenate notranslate">sr<ztpan></a></li><li> �!�!a href="dmd_glue_tocsym.html" title="dmd.glue.tocsym"><span class="d_inlinecode donthyphenate notranslate">tocsym<ztpan></a></li><li> �!�!a href="dmd_glue_toctype.html"�4itle="dmd.glue.toctype"><span class="d_inlinecode donthyphenate notranslate">toctype</span><tæ><vîi><li> <a href="dmd_glue_tocvdebug.html" title="dmd.glue.tocvdebug"><span class="d_inlinecode donthyphenate notranslate">tocvdebug<ztpan></a></li><li> �!�!a href="dmd_glue_todt.html" title="dmd.glue.todt"><span class="d_inlinecode donthyphenate notranslate">todt<ztpan></a></li><li> �!�!a href="dmd_glue_toir.html" title="dmd.glue.toir"><span class="d_inlinecode donthyphenate notranslate">toir<ztpan></a></li><li> �!�!a href="dmd_glue_toobj.html"�4itle="dmd.glue.toobj"><span class="d_inlinecode donthyphenate notranslate">toobj</span><tæ> </li><zùl></li><li> �!�!a href="dmd_hdrgen.html"�4itle="dmd.hdrgen"><span class="d_inlinecode donthyphenate notranslate">hdrgen<ztpan></a></li><li> �!�!a href="dmd_iasm.html"�4itle="dmd.iasm"><span class="d_inlinecode donthyphenate notranslate">iasm<ztpan></a><ul><li> <a href="dmd_iasm_dmdaarch64.html"�4itle="dmd.iasm.dmdaarch64"><span class="d_inlinecode donthyphenate notranslate">dmdaarch64</span><tæ><vîi><li> <a href="dmd_iasm_dmdx86.html"�4itle="dmd.iasm.dmdx86"><span class="d_inlinecode donthyphenate notranslate">dmdx86</span><tæ><vîi><li> <a href="dmd_iasm_gcc.html" title="dmd.iasm.gcc"><span class="d_inlinecode donthyphenate notranslate">gcc<ztpan></a> �!�!vîi></ul><vîi><li> <a href="dmd_id.html" title="dmd.id"><span class="d_inlinecode donthyphenate notranslate">id</span><tæ><vîi><li> <a href="dmd_identifier.html" title="dmd.identifier"><span class="d_inlinecode donthyphenate notranslate">identifier</span><tæ><vîi><li> <a href="dmd_impcnvtab.html"�4itle="dmd.impcnvtab"><span class="d_inlinecode donthyphenate notranslate">impcnvtab<ztpan></a></li><li> �!�!a href="dmd_imphint.html" title="dmd.imphint"><span class="d_inlinecode donthyphenate notranslate">imphint</span><tæ><vîi><li> <a href="dmd_importc.html"�4itle="dmd.importc"><span class="d_inlinecode donthyphenate notranslate">importc<ztpan></a></li><li> �!�!a href="dmd_init.html"�4itle="dmd.init"><span class="d_inlinecode donthyphenate notranslate">init<ztpan></a></li><li> �!�!a href="dmd_initsem.html" title="dmd.initsem"><span class="d_inlinecode donthyphenate notranslate">initsem</span><tæ><vîi><li> <a href="dmd_inline.html" title="dmd.inline"><span class="d_inlinecode donthyphenate notranslate">inline</span><tæ><vîi><li> <a href="dmd_inlinecost.html" title="dmd.inlinecost"><span class="d_inlinecode donthyphenate notranslate">inlinecost</span><tæ><vîi><li> <a href="dmd_intrange.html" title="dmd.intrange"><span class="d_inlinecode donthyphenate notranslate">intrange</span><tæ><vîi><li> <a href="dmd_json.html" title="dmd.json"><span class="d_inlinecode donthyphenate notranslate">json</span><tæ><vîi><li> <a href="dmd_lambdacomp.html" title="dmd.lambdacomp"><span class="d_inlinecode donthyphenate notranslate">lambdacomp</span><tæ><vîi><li> <a href="dmd_lexer.html"�4itle="dmd.lexer"><span class="d_inlinecode donthyphenate notranslate">lexer<ztpan></a></li><li> �!�!a href="dmd_lib.html" title="dmd.lib"><span class="d_inlinecode donthyphenate notranslate">lib</span><tæ><ul><li> �!�!a href="dmd_lib_elf.html" title="dmd.lib.elf"><span class="d_inlinecode donthyphenate notranslate">elf</span><tæ><vîi><li> <a href="dmd_lib_mach.html" title="dmd.lib.mach"><span class="d_inlinecode donthyphenate notranslate">mach</span><tæ><vîi><li> <a href="dmd_lib_mscoff.html" title="dmd.lib.mscoff"><span class="d_inlinecode donthyphenate notranslate">mscoff</span><tæ><vîi><li> <a href="dmd_lib_scanelf.html"�4itle="dmd.lib.scanelf"><span class="d_inlinecode donthyphenate notranslate">scanelf<ztpan></a></li><li> �!�!a href="dmd_lib_scanmach.html"�4itle="dmd.lib.scanmach"><span class="d_inlinecode donthyphenate notranslate">scanmach<ztpan></a></li><li> �!�!a href="dmd_lib_scanmscoff.html"�4itle="dmd.lib.scanmscoff"><span class="d_inlinecode donthyphenate notranslate">scanmscoff<ztpan></a> �!�!vîi></ul><vîi><li> <a href="dmd_link.html" title="dmd.link"><span class="d_inlinecode donthyphenate notranslate">link</span><tæ><vîi><li> <a href="dmd_location.html" title="dmd.location"><span class="d_inlinecode donthyphenate notranslate">location</span><tæ><vîi><li> <a href="dmd_main.html" title="dmd.main"><span class="d_inlinecode donthyphenate notranslate">main</span><tæ><vîi><li> <a href="dmd_mangle.html" title="dmd.mangle"><span class="d_inlinecode donthyphenate notranslate">mangle</span><tæ><ul><li> �!�!a href="dmd_mangle_basic.html"�4itle="dmd.mangle.basic"><span class="d_inlinecode donthyphenate notranslate">basic</span><tæ><vîi><li> <a href="dmd_mangle_cpp.html" title="dmd.mangle.cpp"><span class="d_inlinecode donthyphenate notranslate">cpp<ztpan></a></li><li> �!�!a href="dmd_mangle_cppwin.html" title="dmd.mangle.cppwin"><span class="d_inlinecode donthyphenate notranslate">cppwin<ztpan></a> �!�!vîi></ul><vîi><li> <a href="dmd_mars.html" title="dmd.mars"><span class="d_inlinecode donthyphenate notranslate">mars</span><tæ><vîi><li> <a href="dmd_mtype.html"�4itle="dmd.mtype"><span class="d_inlinecode donthyphenate notranslate">mtype<ztpan></a></li><li> �!�!a href="dmd_mustuse.html" title="dmd.mustuse"><span class="d_inlinecode donthyphenate notranslate">mustuse</span><tæ><vîi><li> <a href="dmd_nogc.html" title="dmd.nogc"><span class="d_inlinecode donthyphenate notranslate">nogc</span><tæ><vîi><li> <a href="dmd_nspace.html" title="dmd.nspace"><span class="d_inlinecode donthyphenate notranslate">nspace</span><tæ><vîi><li> <a href="dmd_ob.html" title="dmd.ob"><span class="d_inlinecode donthyphenate notranslate">ob</span><tæ><vîi><li> <a href="dmd_objc.html" title="dmd.objc"><span class="d_inlinecode donthyphenate notranslate">objc</span><tæ><vîi><li> <a href="dmd_opover.html" title="dmd.opover"><span class="d_inlinecode donthyphenate notranslate">opover</span><tæ><vîi><li> <a href="dmd_optimize.html" title="dmd.optimize"><span class="d_inlinecode donthyphenate notranslate">optimize</span><tæ><vîi><li> <a href="dmd_parse.html"�4itle="dmd.parse"><span class="d_inlinecode donthyphenate notranslate">parse<ztpan></a></li><li> �!�!a href="dmd_pragmasem.html" title="dmd.pragmasem"><span class="d_inlinecode donthyphenate notranslate">pragmasem</span><tæ><vîi><li> <a href="dmd_printast.html" title="dmd.printast"><span class="d_inlinecode donthyphenate notranslate">printast</span><tæ><vîi><li> <h7><span class="d_inlinecode donthyphenate notranslate">root<ztpan></h7><ul><li> �!�!a href="dmd_root_aav.html"�4itle="dmd.root.aav"><span class="d_inlinecode donthyphenate notranslate">aav</span><tæ><vîi><li> <a href="dmd_root_array.html" title="dmd.root.array"><span class="d_inlinecode donthyphenate notranslate">array<ztpan></a></li><li> �!�!a href="dmd_root_bitarray.html" title="dmd.root.bitarray"><span class="d_inlinecode donthyphenate notranslate">bitarray<ztpan></a></li><li> �!�!a href="dmd_root_complex.html"�4itle="dmd.root.complex"><span class="d_inlinecode donthyphenate notranslate">complex</span><tæ><vîi><li> <a href="dmd_root_ctfloat.html" title="dmd.root.ctfloat"><span class="d_inlinecode donthyphenate notranslate">ctfloat<ztpan></a></li><li> �!�!a href="dmd_root_env.html"�4itle="dmd.root.env"><span class="d_inlinecode donthyphenate notranslate">env</span><tæ><vîi><li> <a href="dmd_root_file.html"�4itle="dmd.root.file"><span class="d_inlinecode donthyphenate notranslate">file</span><tæ><vîi><li> <a href="dmd_root_filename.html"�4itle="dmd.root.filename"><span class="d_inlinecode donthyphenate notranslate">filename</span><tæ><vîi><li> <a href="dmd_root_hash.html"�4itle="dmd.root.hash"><span class="d_inlinecode donthyphenate notranslate">hash</span><tæ><vîi><li> <a href="dmd_root_longdouble.html"�4itle="dmd.root.longdouble"><span class="d_inlinecode donthyphenate notranslate">longdouble</span><tæ><vîi><li> <a href="dmd_root_man.html" title="dmd.root.man"><span class="d_inlinecode donthyphenate notranslate">man<ztpan></a></li><li> �!�!a href="dmd_root_optional.html" title="dmd.root.optional"><span class="d_inlinecode donthyphenate notranslate">optional<ztpan></a></li><li> �!�!a href="dmd_root_port.html" title="dmd.root.port"><span class="d_inlinecode donthyphenate notranslate">port<ztpan></a></li><li> �!�!a href="dmd_root_region.html" title="dmd.root.region"><span class="d_inlinecode donthyphenate notranslate">region<ztpan></a></li><li> �!�!a href="dmd_root_response.html" title="dmd.root.response"><span class="d_inlinecode donthyphenate notranslate">response<ztpan></a></li><li> �!�!a href="dmd_root_rmem.html" title="dmd.root.rmem"><span class="d_inlinecode donthyphenate notranslate">rmem<ztpan></a></li><li> �!�!a href="dmd_root_speller.html"�4itle="dmd.root.speller"><span class="d_inlinecode donthyphenate notranslate">speller</span><tæ><vîi><li> <a href="dmd_root_string.html"�4itle="dmd.root.string"><span class="d_inlinecode donthyphenate notranslate">string</span><tæ><vîi><li> <a href="dmd_root_stringtable.html" title="dmd.root.stringtable"><span class="d_inlinecode donthyphenate notranslate">stringtable<ztpan></a></li><li> �!�!a href="dmd_root_strtold.html"�4itle="dmd.root.strtold"><span class="d_inlinecode donthyphenate notranslate">strtold</span><tæ><vîi><li> <a href="dmd_root_utf.html" title="dmd.root.utf"><span class="d_inlinecode donthyphenate notranslate">utf<ztpan></a> �!�!vîi></ul><vîi><li> <a href="dmd_rootobject.html" title="dmd.rootobject"><span class="d_inlinecode donthyphenate notranslate">rootobject</span><tæ><vîi><li> <a href="dmd_safe.html" title="dmd.safe"><span class="d_inlinecode donthyphenate notranslate">safe</span><tæ><vîi><li> <a href="dmd_sarif.html"�4itle="dmd.sarif"><span class="d_inlinecode donthyphenate notranslate">sarif<ztpan></a></li><li> �!�!a href="dmd_semantic�(‘Ñ�)html" title="dmd.semantic2"><span class="d_inlinecode donthyphenate notranslate">semantic2</span><tæ><vîi><li> <a href="dmd_semantic3.html"�4itle="dmd.semantic0»0ó0Á><span class="d_inlinecode donthyphenate notranslate">semantic0Ù0ü0¿ztpan></a></li><li> �!�!a href="dmd_sideeffect.html"�4itle="dmd.sideeffect"><span class="d_inlinecode donthyphenate notranslate">sideeffect<ztpan></a></li><li> �!�!a href="dmd_statement.html" title="dmd.statement"><span class="d_inlinecode donthyphenate notranslate">statement</span><tæ><vîi><li> <a href="dmd_statementsem.html" title="dmd.statementsem"><span class="d_inlinecode donthyphenate notranslate">statementsem</span><tæ><vîi><li> <a href="dmd_staticassert.html" title="dmd.staticassert"><span class="d_inlinecode donthyphenate notranslate">staticassert</span><tæ><vîi><li> <a href="dmd_staticcond.html" title="dmd.staticcond"><span class="d_inlinecode donthyphenate notranslate">staticcond</span><tæ><vîi><li> <a href="dmd_stmtstate.html"�4itle="dmd.stmtstate"><span class="d_inlinecode donthyphenate notranslate">stmtstate<ztpan></a></li><li> �!�!a href="dmd_target.html"�4itle="dmd.target"><span class="d_inlinecode donthyphenate notranslate">target<ztpan></a></li><li> �!�!a href="dmd_targetcompiler.html"�4itle="dmd.targetcompiler"><span class="d_inlinecode donthyphenate notranslate">targetcompiler<ztpan></a></li><li> �!�!a href="dmd_templateparamsem.html"�4itle="dmd.templateparamsem"><span class="d_inlinecode donthyphenate notranslate">templateparamsem<ztpan></a></li><li> �!�!a href="dmd_templatesem.html" title="dmd.templatesem"><span class="d_inlinecode donthyphenate notranslate">templatesem</span><tæ><vîi><li> <a href="dmd_timetrace.html"�4itle="dmd.timetrace"><span class="d_inlinecode donthyphenate notranslate">timetrace<ztpan></a></li><li> �!�!a href="dmd_tokens.html"�4itle="dmd.tokens"><span class="d_inlinecode donthyphenate notranslate">tokens<ztpan></a></li><li> �!�!a href="dmd_traits.html"�4itle="dmd.traits"><span class="d_inlinecode donthyphenate notranslate">traits<ztpan></a></li><li> �!�!a href="dmd_typesem.html" title="dmd.typesem"><span class="d_inlinecode donthyphenate notranslate">typesem</span><tæ><vîi><li> <a href="dmd_typinf.html" title="dmd.typinf"><span class="d_inlinecode donthyphenate notranslate">typinf</span><tæ><vîi><li> <a href="dmd_utils.html"�4itle="dmd.utils"><span class="d_inlinecode donthyphenate notranslate">utils<ztpan></a></li><li> �!�!a href="dmd_visitor.html" title="dmd.visitor"><span class="d_inlinecode donthyphenate notranslate">visitor</span><tæ><ul><li> �!�!a href="dmd_visitor_foreachvar.html"�4itle="dmd.visitor.foreachvar"><span class="d_inlinecode donthyphenate notranslate">foreachvar<ztpan></a></li><li> �!�!a href="dmd_visitor_parsetime.html" title="dmd.visitor.parsetime"><span class="d_inlinecode donthyphenate notranslate">parsetime</span><tæ><vîi><li> <a href="dmd_visitor_permissive.html" title="dmd.visitor.permissive"><span class="d_inlinecode donthyphenate notranslate">permissive</span><tæ><vîi><li> <a href="dmd_visitor_postorder.html"�4itle="dmd.visitor.postorder"><span class="d_inlinecode donthyphenate notranslate">postorder<ztpan></a></li><li> �!�!a href="dmd_visitor_statement_rewrite_walker.html"�4itle="dmd.visitor.statement_rewrite_walker"><span class="d_inlinecode donthyphenate notranslate">statement_rewrite_walker<ztpan></a></li><li> �!�!a href="dmd_visitor_strict.html"�4itle="dmd.visitor.strict"><span class="d_inlinecode donthyphenate notranslate">strict<ztpan></a></li><li> �!�!a href="dmd_visitor_transitive.html"�4itle="dmd.visitor.transitive"><span class="d_inlinecode donthyphenate notranslate">transitive<ztpan></a> �!�!vîi></ul><vîi><li> <a href="dmd_vsoptions.html"�4itle="dmd.vsoptions"><span class="d_inlinecode donthyphenate notranslate">vsoptions<ztpan></a> <vîi></ul> </li> <li class='expand-container modlist-submenu-rt'><a class='expand-toggle' href='#'><span><em class="tt">rt</em><ztpan></a> <ul><li> �!�!a href="rt_aApply.html" title="rt.aApply"><span class="d_inlinecode donthyphenate notranslate">aApply<ztpan></a></li><li> �!�!a href="rt_aApplyR.html"�4itle="rt.aApplyR"><span class="d_inlinecode donthyphenate notranslate">aApplyR</span><tæ><vîi><li> <a href="rt_alloca.html"�4itle="rt.alloca"><span class="d_inlinecode donthyphenate notranslate">alloca</span><tæ><vîi><li> <a href="rt_arraycat.html"�4itle="rt.arraycat"><span class="d_inlinecode donthyphenate notranslate">arraycat</span><tæ><vîi><li> <a href="rt_cmath2.html"�4itle="rt.cmath�(N �)><span class="d_inlinecode donthyphenate notranslate">cmath2</span><tæ><vîi><li> <a href="rt_config.html"�4itle="rt.config"><span class="d_inlinecode donthyphenate notranslate">config</span><tæ><vîi><li> <a href="rt_cover.html" title="rt.cover"><span class="d_inlinecode donthyphenate notranslate">cover<ztpan></a></li><li> �!�!a href="rt_critical_.html"�4itle="rt.critical_"><span class="d_inlinecode donthyphenate notranslate">critical_</span><tæ><vîi><li> <a href="rt_deh.html" title="rt.deh"><span class="d_inlinecode donthyphenate notranslate">deh<ztpan></a></li><li> �!�!a href="rt_deh_win0Õ0¡0é0Ã0É.html"�4itle="rt.deh_win0Õ0¡0é0Ã0É"><span class="d_inlinecode donthyphenate notranslate">deh_win0Õ0¡0é0Ã0É</span><tæ><vîi><li> <a href="rt_deh_win64_posix.html" title="rt.deh_win64_posix"><span class="d_inlinecode donthyphenate notranslate">deh_win64_posix<ztpan></a></li><li> �!�!a href="rt_dmain�(‘Ñ�)html" title="rt.dmain2"><span class="d_inlinecode donthyphenate notranslate">dmain�(vã�)ztpan></a></li><li> �!�!a href="rt_dwarfeh.html"�4itle="rt.dwarfeh"><span class="d_inlinecode donthyphenate notranslate">dwarfeh</span><tæ><vîi><li> <a href="rt_ehalloc.html" title="rt.ehalloc"><span class="d_inlinecode donthyphenate notranslate">ehalloc<ztpan></a></li><li> �!�!a href="rt_invariant_.html" title="rt.invariant_"><span class="d_inlinecode donthyphenate notranslate">invariant_<ztpan></a></li><li> �!�!a href="rt_lifetime.html" title="rt.lifetime"><span class="d_inlinecode donthyphenate notranslate">lifetime<ztpan></a></li><li> �!�!a href="rt_llmath.html" title="rt.llmath"><span class="d_inlinecode donthyphenate notranslate">llmath<ztpan></a></li><li> �!�!a href="rt_memory.html" title="rt.memory"><span class="d_inlinecode donthyphenate notranslate">memory<ztpan></a></li><li> �!�!a href="rt_memset.html" title="rt.memset"><span class="d_inlinecode donthyphenate notranslate">memset<ztpan></a></li><li> �!�!a href="rt_minfo.html"�4itle="rt.minfo"><span class="d_inlinecode donthyphenate notranslate">minfo</span><tæ><vîi><li> <a href="rt_monitor_.html"�4itle="rt.monitor_"><span class="d_inlinecode donthyphenate notranslate">monitor_</span><tæ><vîi><li> <a href="rt_msvc.html"�4itle="rt.msvc"><span class="d_inlinecode donthyphenate notranslate">msvc</span><tæ><vîi><li> <a href="rt_msvc_math.html" title="rt.msvc_math"><span class="d_inlinecode donthyphenate notranslate">msvc_math<ztpan></a></li><li> �!�!a href="rt_profilegc.html"�4itle="rt.profilegc"><span class="d_inlinecode donthyphenate notranslate">profilegc</span><tæ><vîi><li> <a href="rt_sections.html"�4itle="rt.sections"><span class="d_inlinecode donthyphenate notranslate">sections</span><tæ><vîi><li> <a href="rt_sections_darwin_64.html"�4itle="rt.sections_darwin_64"><span class="d_inlinecode donthyphenate notranslate">sections_darwin_64</span><tæ><vîi><li> <a href="rt_sections_elf_shared.html" title="rt.sections_elf_shared"><span class="d_inlinecode donthyphenate notranslate">sections_elf_shared<ztpan></a></li><li> �!�!a href="rt_sections_osx_x86.html" title="rt.sections_osx_x86"><span class="d_inlinecode donthyphenate notranslate">sections_osx_x86<ztpan></a></li><li> �!�!a href="rt_sections_osx_x86_64.html"�4itle="rt.sections_osx_x86_64"><span class="d_inlinecode donthyphenate notranslate">sections_osx_x86_64</span><tæ><vîi><li> <a href="rt_sections_solaris.html"�4itle="rt.sections_solaris"><span class="d_inlinecode donthyphenate notranslate">sections_solaris</span><tæ><vîi><li> <a href="rt_sections_win64.html"�4itle="rt.sections_win64"><span class="d_inlinecode donthyphenate notranslate">sections_win64</span><tæ><vîi><li> <a href="rt_tlsgc.html" title="rt.tlsgc"><span class="d_inlinecode donthyphenate notranslate">tlsgc<ztpan></a></li><li> �!�!a href="rt_trace.html"�4itle="rt.trace"><span class="d_inlinecode donthyphenate notranslate">trace</span><tæ><vîi><li> <a href="rt_tracegc.html" title="rt.tracegc"><span class="d_inlinecode donthyphenate notranslate">tracegc<ztpan></a></li><li> �!�!h7><span class="d_inlinecode donthyphenate notranslate">util</span><vv7><ul><li> <a href="rt_util_typeinfo.html" title="rt.util.typeinfo"><span class="d_inlinecode donthyphenate notranslate">typeinfo</span><tæ><vîi><li> <a href="rt_util_utility.html"�4itle="rt.util.utility"><span class="d_inlinecode donthyphenate notranslate">utility<ztpan></a> �!�!vîi></ul> </li><zùl> <vîi></ul> </div> �!�!div class="hyphenate" id="content"> � <div id="tools"><div� <div class="tip smallprint"> <a href="https:]ågithub.comu(langy:hobos/issueswâew?title=%5Bstd.concurrency%5D%20&label=Severity:Enhancement">Report a bug</a> <div > If�9ou spot a problem with�4his page, click here�4o create a Bugzilla issue. <u(iv> <u(iv> <div class="tip smallprint"> <a href="https:]ågithub.comu(langy:hobos/editwÛaster/std/concurrency.d">Improve�4his page</a> <div > Quickly fork, edit online, and submit a pull request for�4his page. Requires a signed-in GitHub account. This�7orks�7ell for small changes. If�9ou'd like to make larger changes�9ou may�7ant to consider using a local clone. </div> </div> <u(iv><u(iv> <h´<span class="d_title">std.concurrency<ztpan></h1> <div class="quickindex" id="quickindex"></div> �!�!div class="summary"><script type="textv®avascript">inhibitQuickIndex = 1;<ztcript> <div class="quickindex">�!�!table class="book"><caption></caption>�!�!tr><th scope="col">Category<zËh>�!�!th scope="col">Symbols</th><zËr> <tr><td>Tid<zËd>�!�!td> <a href="#.locate"><em class="tt">locate</em><tæ>  �!�!a href="#.ownerTid"><em class="tt">ownerTid<u0m></a>  <a href="#.register"><em class="tt">register</em><tæ>  �!�!a href="#.spawn"><em class="tt">spawn<u0m></a>  <a href="#.spawnLinked"><em class="tt">spawnLinked</em><tæ>  �!�!a href="#.thisTid"><em class="tt">thisTid<u0m></a>  <a href="#.Tid"><em class="tt">Tid</em><tæ>  �!�!a href="#.TidMissingException"><em class="tt">TidMissingException<u0m></a>  <a href="#.unregister"><em class="tt">unregister</em><tæ>  �!�!zËd></tr> �!�!tr><td>Message�0assing</td> <td> �!�!a href="#.prioritySend"><em class="tt">prioritySend<u0m></a>  <a href="#.receive"><em class="tt">receive</em><tæ>  �!�!a href="#.receiveOnly"><em class="tt">receiveOnly<u0m></a>  <a href="#.receiveTimeout"><em class="tt">receiveTimeout</em><tæ>  �!�!a href="#.send"><em class="tt">send<u0m></a>  <a href="#.setMaxMailboxSize"><em class="tt">setMaxMailboxSize</em><tæ>  �!�!zËd></tr> �!�!tr><td>Message-related�4ypes</td> <td> �!�!a href="#.LinkTerminated"><em class="tt">LinkTerminated<u0m></a>  <a href="#.MailboxFull"><em class="tt">MailboxFull</em><tæ>  �!�!a href="#.MessageMismatch"><em class="tt">MessageMismatch<u0m></a>  <a href="#.OnCrowding"><em class="tt">OnCrowding</em><tæ>  �!�!a href="#.OwnerTerminated"><em class="tt">OwnerTerminated<u0m></a>  <a href="#.PriorityMessageException"><em class="tt">PriorityMessageException</em><tæ>  �!�!zËd></tr> �!�!tr><td>Scheduler</td> <td> �!�!a href="#.FiberScheduler"><em class="tt">FiberScheduler<u0m></a>  <a href="#.Generator"><em class="tt">Generator</em><tæ>  �!�!a href="#.Scheduler"><em class="tt">Scheduler<u0m></a>  <a href="#.scheduler"><em class="tt">scheduler</em><tæ>  �!�!a href="#.ThreadInfo"><em class="tt">ThreadInfo<u0m></a>  <a href="#.ThreadScheduler"><em class="tt">ThreadScheduler</em><tæ>  �!�!a href="#.yield"><em class="tt">yield<u0m></a>  </td><zËr> <tr><td>Misc</td> <td> �!�!a href="#.initOnce"><em class="tt">initOnce<u0m></a>  </td><zËr> </table></div> <u(iv><div class="description">This is a low-level messaging API upon�7hich more structured or restrictive APIs may be built. The general idea is�4hat every messageable entity is represented by a common handle type called a <span class="d_inlinecode donthyphenate notranslate">Tid</span>,�7hich allows messages�4o be sent�4o logical threads that are executing in both�4he current�0rocess and in external processes using the same interface. This is an important aspect of scalability because it allows�4he components of a�0rogram�4o be spread across available resources with few�4o no changes�4o the actual implementation. <div class="blankline"><u(iv> A logical thread is an execution context�4hat has its own stack and which runs asynchronously�4o other logical threads. These may be�0reemptively scheduled kernel threads,�!�!a href="core_thread_fiber.html">fibers</a> (cooperative�5ser-space threads), or some other concept with similar behavior. <div class="blankline"></div> The�4ype of concurrency�5sed when logical�4hreads are created is determined by�4he�!�!a href="#Scheduler"><span class="d_inlinecode donthyphenate notranslate">Scheduler</span><tæ> selected at initialization�4ime. The default behavior is currently�4o create a new kernel thread�0er call to spawn, but other schedulers are available that multiplex fibers across�4he main thread or �5se some combination of�4he�4wo approaches. </div> <div class="keyval License"><span class="key keyLicense">License:</span> <div class="val valLicense"><a href="http:]åwww.boost.org/LICENSE_q0.txt">Boost License 1.0</a>. </div></div> <div class="keyval Authors"><span class="key keyAuthors">Authors:</span> <div class="val valAuthors">Sean Kelly, Alex Rønne Petersen, Martin Nowak <u(iv><u(iv> <div class="val"><p class="keyval Section"><span class="key keySection">Source</span> <span class="phobos_src"><a class="https" href="https:]ågithub.comu(langy:hobos/blobwÛaster/std/concurrency.d">stduoncurrency.d</a></span><y:><u(iv> <span class="dlang_runnable"><ztpan><div class="keyval Examples"><span class="key keyExamples">Examples:</span> <div class="val valExamples"><pre class="d_code notranslate"><span class="d_keyword">__gshared</span> string received; <span class="d_keyword">static<ztpan>�!�!span class="d_keyword">void<ztpan> spawnedFunc(Tid ownerTid) { �!�!span class="d_keyword">import<ztpan> std.conv : text; <span class="d_comment">]å Receive a message from the owner thread. </span> receive((<span class="d_keyword">int<ztpan> i){ received = text(<span class="d_string">"Received the number "</span>, i); <span class="d_comment">]å Send a message back�4o the owner thread <ztpan> <span class="d_comment">]å indicating success. <ztpan> send(ownerTid,�!�!span class="d_keyword">true<ztpan>); �(); } <span class="d_comment">]å Start spawnedFunc in a new thread. </span><span class="d_keyword">auto<ztpan> childTid = spawn(&spawnedFunc, thisTid); <span class="d_comment">/XëSend�4he number 42�4o this new�4hread. <ztpan>send(childTid, 2 2 2�(SA�); <span class="d_comment">/XëReceive the result code. <ztpan><span class="d_keyword">auto</span> wasSuccessful = receiveOnly!(<span class="d_keyword">bool<ztpan>); <span class="d_keyword">assert<ztpan>(wasSuccessful); writeln(received); <span class="d_comment">]å "Received�4he number 42" </span><y:re> </div></div> <dl><dt class="d_decl"><div ><span class="def-anchor" id=".MessageMismatch"></span><div class="quickindex" id="quickindex.MessageMismatch"><u(iv>class�!�!span class="def-anchor" id="MessageMismatch"><ztpan><code class="ddoc_psymbol">MessageMismatch</code>:�!�!span class="ddoc_psuper_symbol">object.Exception</span>; <br><u(iv><u(t> <dd><div class="summary">Thrown on calls to�!�!a href="#receiveOnly"><span class="d_inlinecode donthyphenate notranslate">receiveOnly</span><tæ> if a message other�4han the type the receiving thread expected is sent.</div> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".MessageMismatch.this"></span><div class="quickindex" id="quickindex.MessageMismatch.this"></div>pure nothrow @nogc @safe�4his(string�!�!code class="ddoc_param">msg<uode> = "Unexpected message�4ype"); <br><u(iv><u(t> <dd> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".OwnerTerminated"></span><div class="quickindex" id="quickindex.OwnerTerminated"><u(iv>class�!�!span class="def-anchor" id="OwnerTerminated"><ztpan><code class="ddoc_psymbol">OwnerTerminated</code>:�!�!span class="ddoc_psuper_symbol">object.Exception</span>; <br><u(iv><u(t> <dd><div class="summary">Thrown on calls to�!�!a href="#receive"><span class="d_inlinecode donthyphenate notranslate">receive</span><tæ> if�4he�4hread that spawned�4he receiving thread has�4erminated and no more messages exist.<u(iv> <dl><dt class="d_decl"><div ><span class="def-anchor" id=".OwnerTerminated.this"><ztpan><div class="quickindex" id="quickindex.OwnerTerminated.this"><u(iv>pure nothrow @nogc @safe this(Tid�!�!code class="ddoc_param">t<uode>, string�!�!code class="ddoc_param">msg<uode> = "Owner terminated"); <br></div></dt> <dd> <u(d> <u(l> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".LinkTerminated"></span><div class="quickindex" id="quickindex.LinkTerminated"></div>class <span class="def-anchor" id="LinkTerminated"><ztpan><code class="ddoc_psymbol">LinkTerminated<uode>: <span class="ddoc_psuper_symbol">object.Exception<ztpan>; <br></div></dt> <dd><div class="summary">Thrown if a linked thread has�4erminated.</div> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".LinkTerminated.this"><ztpan><div class="quickindex" id="quickindex.LinkTerminated.this"></div>pure nothrow @nogc @safe�4his(Tid <code class="ddoc_param">t</code>, string <code class="ddoc_param">msg</code> = "Link terminated"); <br></div></dt> <dd> <u(d> <u(l> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".PriorityMessageException"></span><div class="quickindex" id="quickindex.PriorityMessageException"></div>class <span class="def-anchor" id="PriorityMessageException"><ztpan><code class="ddoc_psymbol">PriorityMessageException<uode>: <span class="ddoc_psuper_symbol">object.Exception<ztpan>; <br></div></dt> <dd><div class="summary">Thrown if a message�7as sent to a�4hread via �!�!a href="std_concurrency.html#.prioritySend"><span class="d_inlinecode donthyphenate notranslate">std.concurrency.prioritySend<ztpan></a> and�4he receiver does not have a handler for a message of this�4ype.</div> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".PriorityMessageException.this"><ztpan><div class="quickindex" id="quickindex.PriorityMessageException.this"></div>this(Variant�!�!code class="ddoc_param">vals</code>); <br></div></dt> <dd> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".PriorityMessageException.message"></span><div class="quickindex" id="quickindex.PriorityMessageException.message"></div>Variant <span class="def-anchor" id="message"></span><code class="ddoc_psymbol">message<uode>; <br></div></dt> <dd><div class="summary">The message�4hat was sent.<u(iv> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".MailboxFull"></span><div class="quickindex" id="quickindex.MailboxFull"><u(iv>class�!�!span class="def-anchor" id="MailboxFull"><ztpan><code class="ddoc_psymbol">MailboxFull</code>:�!�!span class="ddoc_psuper_symbol">object.Exception</span>; <br><u(iv><u(t> <dd><div class="summary">Thrown on mailbox crowding if the mailbox is configured with <span class="d_inlinecode donthyphenate notranslate">OnCrowding.throwException</span>.</div> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".MailboxFull.this"></span><div class="quickindex" id="quickindex.MailboxFull.this"></div>pure nothrow @nogc @safe�4his(Tid <code class="ddoc_param">t</code>, string <code class="ddoc_param">msg</code> = "Mailbox full"); <br><u(iv><u(t> <dd> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".TidMissingException"></span><div class="quickindex" id="quickindex.TidMissingException"><u(iv>class�!�!span class="def-anchor" id="TidMissingException"><ztpan><code class="ddoc_psymbol">TidMissingException</code>:�!�!span class="ddoc_psuper_symbol">object.Exception</span>; <br><u(iv><u(t> <dd><div class="summary">Thrown�7hen a <span class="d_inlinecode donthyphenate notranslate">Tid</span> is missing, e.g.�7hen <a href="#ownerTid"><span class="d_inlinecode donthyphenate notranslate">ownerTid<ztpan></a> doesn't find an owner thread.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Tid"></span><div class="quickindex" id="quickindex.Tid"><u(iv>struct <span class="def-anchor" id="Tid"></span><code class="ddoc_psymbol">Tid<uode>; <br></div></dt> <dd><div class="summary">An opaque�4ype used�4o represent a logical thread.<u(iv> <dl><dt class="d_decl"><div ><span class="def-anchor" id=".Tid.toString"><ztpan><div class="quickindex" id="quickindex.Tid.toString"><u(iv>void <span class="def-anchor" id="toString"><ztpan><code class="ddoc_psymbol">toString<uode><span class="template_param_list" title="Template parameter list">(W)<ztpan>(ref 2 2 2 2�!�!code class="ddoc_param">w<uode>) const; <br><u(iv><u(t> <dd><div class="summary">Generate a convenient string for identifying�4his <span class="d_inlinecode donthyphenate notranslate">Tid</span>. This is only useful�4o see if�!�!span class="d_inlinecode donthyphenate notranslate">Tid<ztpan>'s�4hat are currently executing are the same or different, e.g. for logging and debugging. �!�?t is�0otentially�0ossible �4hat a <span class="d_inlinecode donthyphenate notranslate">Tid</span> executed in the future�7ill have�4he same <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="toString"></span><code class="ddoc_psymbol">toString</code>()<ztpan> output as another <span class="d_inlinecode donthyphenate notranslate">Tid</span> that has already�4erminated.</div> <u(d> <u(l> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".thisTid"><ztpan><div class="quickindex" id="quickindex.thisTid"></div>@property @safe Tid <span class="def-anchor" id="thisTid"></span><code class="ddoc_psymbol">thisTid<uode>(); <br></div></dt> <dd><div class="keyval Returns"><span class="key keyReturns">Returns:<ztpan>�!�!div class="val�6alReturns">The�!�!span class="d_inlinecode donthyphenate notranslate">Tid<ztpan> of the caller's�4hread.</div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".ownerTid"><ztpan><div class="quickindex" id="quickindex.ownerTid"><u(iv>@property Tid�!�!span class="def-anchor" id="ownerTid"></span><code class="ddoc_psymbol">ownerTid</code>(); <br><u(iv><u(t> <dd><div class="summary">Return�4he�!�!span class="d_inlinecode donthyphenate notranslate">Tid<ztpan> of the thread�7hich spawned�4he caller's thread. </div><div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows">A�!�!span class="d_inlinecode donthyphenate notranslate">TidMissingException<ztpan> exception if �4here is no owner�4hread.</div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".spawn"></span><div class="quickindex" id="quickindex.spawn"><u(iv>Tid�!�!span class="def-anchor" id="spawn"><ztpan><code class="ddoc_psymbol">spawn</code><span class="template_param_list"�4itle="Template�0arameter list">(F, T...)</span>(F <code class="ddoc_param">fn<uode>, T <code class="ddoc_param">args<uode>)<br><span class="constraint">if (isSpawnable!(F, T))<ztpan>; <br></div></dt> <dd><div class="summary">Starts <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">fn</code>(<code class="ddoc_param">args<uode>)<ztpan> in a new logical thread. </div><div class="description">Executes the supplied function in a new logical�4hread represented by <span class="d_inlinecode donthyphenate notranslate">Tid</span>. The calling thread is designated as the owner of�4he new�4hread. When�4he owner�4hread terminates an <span class="d_inlinecode donthyphenate notranslate">OwnerTerminated</span> message will be sent to�4he new�4hread, causing an <span class="d_inlinecode donthyphenate notranslate">OwnerTerminated</span> exception to be �4hrown on�!�!span class="d_inlinecode donthyphenate notranslate">receive()<ztpan>. <u(iv> <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">F <code class="ddoc_param">fn<uode></td> <td class="param_desc">The function to execute.<zËd></tr> <tr class="param"><td class="param_id">T�!�!code class="ddoc_param">args</code><zËd> <td class="param_desc">Arguments to�4he function.</td><zËr> <zËable><u(iv><u(iv> <div class="keyval Returns"><span class="key keyReturns">Returns:<ztpan>�!�!div class="val�6alReturns">A�!�!span class="d_inlinecode donthyphenate notranslate">Tid<ztpan> representing the new logical thread. <u(iv><u(iv> <div class="val"><p class="keyval Section"><span class="key keySection">Notes<ztpan> <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">args<uode></span> must not have unshared aliasing. In other�7ords, all arguments to�!�!span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">fn<uode></span> must either be�!�!span class="d_inlinecode donthyphenate notranslate">shared</span> or�!�!span class="d_inlinecode donthyphenate notranslate">immutable<ztpan> or have no pointer indirection. This is necessary for enforcing isolation among threads. <div class="blankline"></div> Similarly, if�!�!span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">fn<uode></span> is a delegate, it must not have unshared aliases, meaning �!�!span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">fn<uode></span> must be either�!�!span class="d_inlinecode donthyphenate notranslate">shared</span> or�!�!span class="d_inlinecode donthyphenate notranslate">immutable<ztpan>.<y:><u(iv> <span class="dlang_runnable"><ztpan><div class="keyval Examples"><span class="key keyExamples">Examples:</span> <div class="val valExamples"><pre class="d_code notranslate"><span class="d_keyword">static<ztpan>�!�!span class="d_keyword">void<ztpan> f(string msg) { �7riteln(msg);�!�!span class="d_comment">/Xë"Hello 2 2 2 2orld" </span>} <span class="d_keyword">auto</span> tid = <span class="d_psymbol">spawn<ztpan>(&f,�!�!span class="d_string">"Hello 2 2 2 2orld"<ztpan>); <y:re> </div></div> <span class="dlang_runnable"></span><div class="keyval Examples"><span class="key keyExamples">Examples:<ztpan>�!�!div class="val�6alExamples">Fails: char[] has mutable aliasing. <pre class="d_code notranslate">string msg =�!�!span class="d_string">"Hello, World!"<ztpan>; <span class="d_keyword">static<ztpan>�!�!span class="d_keyword">void<ztpan> f1(string msg) {} <span class="d_keyword">static<ztpan>�!�!span class="d_keyword">assert<ztpan>(!<span class="d_keyword">__traits</span>(compiles, <span class="d_psymbol">spawn<ztpan>(&f1, msg.dup))); <span class="d_keyword">static</span> <span class="d_keyword">assert</span>(�!�!span class="d_keyword">__traits<ztpan>(compiles,�!�!span class="d_psymbol">spawn</span>(&f1, msg.idup))); <span class="d_keyword">static<ztpan>�!�!span class="d_keyword">void<ztpan> f�(N]�)<span class="d_keyword">char</span>[] msg)"} <span class="d_keyword">static</span> <span class="d_keyword">assert</span>(Àspan class="d_keyword">__traits<ztpan>(compiles,�!�!span class="d_psymbol">spawn</span>(&f�(l4�) msg.dup))); <span class="d_keyword">static<ztpan>�!�!span class="d_keyword">assert<ztpan>(!<span class="d_keyword">__traits</span>(compiles, <span class="d_psymbol">spawn<ztpan>(&f2, msg.idup))); <y:re> </div></div> <span class="dlang_runnable"></span><div class="keyval Examples"><span class="key keyExamples">Examples:<ztpan>�!�!div class="val�6alExamples">New thread�7ith anonymous function <pre class="d_code notranslate"><span class="d_psymbol">spawn</span>({ ownerTid.send(<span class="d_string">"This is so great�T�M</span>); }); writeln(receiveOnly!string);�!�!span class="d_comment">/Xë"This is so great!" </span><y:re> </div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".spawnLinked"></span><div class="quickindex" id="quickindex.spawnLinked"><u(iv>Tid�!�!span class="def-anchor" id="spawnLinked"><ztpan><code class="ddoc_psymbol">spawnLinked</code><span class="template_param_list"�4itle="Template�0arameter list">(F, T...)</span>(F <code class="ddoc_param">fn<uode>, T <code class="ddoc_param">args<uode>)<br><span class="constraint">if (isSpawnable!(F, T))<ztpan>; <br></div></dt> <dd><div class="summary">Starts <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">fn</code>(<code class="ddoc_param">args<uode>)<ztpan> in a logical thread and�7ill receive a <span class="d_inlinecode donthyphenate notranslate">LinkTerminated<ztpan> message when�4he operation�4erminates. <u(iv><div class="description">Executes�4he supplied function in a new logical thread represented by �!�!span class="d_inlinecode donthyphenate notranslate">Tid<ztpan>. This new thread is linked�4o the calling thread so that if either it or the calling thread�4erminates a <span class="d_inlinecode donthyphenate notranslate">LinkTerminated<ztpan> message�7ill be sent �4o the other, causing a�!�!span class="d_inlinecode donthyphenate notranslate">LinkTerminated</span> exception to be thrown on <span class="d_inlinecode donthyphenate notranslate">receive()</span>. The owner relationship from <span class="d_inlinecode donthyphenate notranslate">spawn()</span> is�0reserved as well, so if the link between threads is broken, owner�4ermination�7ill still result in an <span class="d_inlinecode donthyphenate notranslate">OwnerTerminated</span> exception to be thrown on <span class="d_inlinecode donthyphenate notranslate">receive()</span>. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">F�!�!code class="ddoc_param">fn</code><zËd> <td class="param_desc">The function�4o execute.</td><zËr> <tr class="param"><td class="param_id">T <code class="ddoc_param">args<uode></td> <td class="param_desc">Arguments�4o the function.<zËd></tr> </table></div></div> <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">A Tid representing�4he new�4hread.</div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".send"><ztpan><div class="quickindex" id="quickindex.send"><u(iv>void <span class="def-anchor" id="send"><ztpan><code class="ddoc_psymbol">send<uode><span class="template_param_list" title="Template parameter list">(T...)</span>(Tid <code class="ddoc_param">tid</code>, T�!�!code class="ddoc_param">vals</code>); <br></div></dt> <dd><div class="summary">Places the values as a message at�4he back of�4id's message�iueue. </div><div class="description">Sends�4he supplied value to�4he�4hread represented by�4id. As with <a href="std_concurrency.html#.spawn"><span class="d_inlinecode donthyphenate notranslate">std.concurrency.spawn</span><tæ>,�!�!span class="d_inlinecode donthyphenate notranslate">T<ztpan> must not have�5nshared aliasing.<u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".prioritySend"></span><div class="quickindex" id="quickindex.prioritySend"></div>void�!�!span class="def-anchor" id="prioritySend"></span><code class="ddoc_psymbol">prioritySend</code><span class="template_param_list"�4itle="Template�0arameter list">(T...)<ztpan>(Tid�!�!code class="ddoc_param">tid<uode>, T <code class="ddoc_param">vals<uode>); <br><u(iv><u(t> <dd><div class="summary">Places�4he�6alues as a message on the front of�4id's message�iueue. </div><div class="description">Send a message to�!�!span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">tid</code><ztpan> but�0lace it at�4he front of <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">tid<uode></span>'s message �iueue instead of at�4he back. This function is�4ypically�5sed for out-af-band communication, to signal exceptional conditions, etc.</div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".receive"></span><div class="quickindex" id="quickindex.receive"><u(iv>void <span class="def-anchor" id="receive"></span><code class="ddoc_psymbol">receive<uode><span class="template_param_list" title="Template parameter list">(T...)</span>(T <code class="ddoc_param">ops</code>); <br></div></dt> <dd><div class="summary">Receives a message from another�4hread. <u(iv><div class="description">Receive a message from another�4hread, or block if no messages of the specified�4ypes are available. This function�7orks by pattern matching a message against a set of delegates and executing�4he first match found. <div class="blankline"><u(iv> If a delegate that accepts a�!�!a href="std_variant.html#.Variant"><span class="d_inlinecode donthyphenate notranslate">std.variant.Variant<ztpan></a> is included as �4he last argument�4o <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="receive"><ztpan><code class="ddoc_psymbol">receive</code><ztpan>, it�7ill match any message that�7as not matched by an earlier delegate. �!�?f more�4han one argument is sent, �4he�!�!span class="d_inlinecode donthyphenate notranslate">Variant<ztpan>�7ill contain a <a href="std_typecons.html#.Tuple"><span class="d_inlinecode donthyphenate notranslate">std.typecons.Tuple</span><tæ> of all�6alues sent. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">T�!�!code class="ddoc_param">ops<uode></td> <td class="param_desc">Variadic list of function�0ointers and delegates. Entries in�4his list must not occlude later entries.</td><zËr> <zËable><u(iv><u(iv> <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#OwnerTerminated"><span class="d_inlinecode donthyphenate notranslate">OwnerTerminated</span><tæ> when�4he sending�4hread was terminated.<u(iv><u(iv> <span class="dlang_runnable"><ztpan><div class="keyval Examples"><span class="key keyExamples">Examples:</span> <div class="val valExamples"><pre class="d_code notranslate"><span class="d_keyword">import<ztpan> std.variant : Variant; <span class="d_keyword">auto<ztpan>�0rocess = () { <span class="d_psymbol">receive<ztpan>( (<span class="d_keyword">int</span> i)" ownerTid.send(1);�(, (<span class="d_keyword">double<ztpan> f) { ownerTid.send(�(SA�); }, (Variant v)" ownerTid.send(3);�( ); }; { <span class="d_keyword">auto</span> tid = spawn(process); send(tid, 42); �7riteln(receiveOnlyÀspan class="d_keyword">int</span>); <span class="d_comment">]å 1 <ztpan>} { �!�!span class="d_keyword">auto<ztpan>�4id = spawn(process); send(tid, 2 2.14); writeln(receiveOnly!<span class="d_keyword">int<ztpan>);�!�!span class="d_comment">/Xë�(�)</span>} { <span class="d_keyword">auto</span> tid = spawn(process); send(tid, <span class="d_string">"something else"<ztpan>); �7riteln(receiveOnlyÀspan class="d_keyword">int</span>); <span class="d_comment">]å 2 2 <ztpan>} </pre> <u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".receiveOnly"><ztpan><div class="quickindex" id="quickindex.receiveOnly"></div>receiveOnlyRet�2 D�3�!�!span class="def-anchor" id="receiveOnly"><ztpan><code class="ddoc_psymbol">receiveOnly</code><span class="template_param_list"�4itle="Template�0arameter list">(T...)<ztpan>(); <br></div></dt> <dd><div class="summary">Receives only messages with arguments of the specified types. <u(iv><div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">T</td> <td class="param_desc">Variadic list of types to be received.<zËd></tr> </table></div></div> <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">The received message. �!�?f <span class="d_inlinecode donthyphenate notranslate">T</span> has more�4han one entry, �4he message�7ill be�0acked into a�!�!a href="std_typecons.html#.Tuple"><span class="d_inlinecode donthyphenate notranslate">std.typecons.Tuple<ztpan></a>. <u(iv><u(iv> <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#MessageMismatch"><span class="d_inlinecode donthyphenate notranslate">MessageMismatch</span><tæ> if a message of types other than�!�!span class="d_inlinecode donthyphenate notranslate">T<ztpan> is received, <a href="#OwnerTerminated"><span class="d_inlinecode donthyphenate notranslate">OwnerTerminated<ztpan></a>�7hen the sending thread�7as�4erminated.</div></div> <span class="dlang_runnable"></span><div class="keyval Examples"><span class="key keyExamples">Examples:<ztpan>�!�!div class="val�6alExamples"><pre class="d_code notranslate"><span class="d_keyword">auto</span> tid = spawn( { �!�!span class="d_keyword">assert<ztpan>(<span class="d_psymbol">receiveOnly</span>!<span class="d_keyword">int<ztpan> == 42); }); send(tid, 2 2 2�(SA�); </pre> <u(iv><u(iv> <span class="dlang_runnable"><ztpan><div class="keyval Examples"><span class="key keyExamples">Examples:</span> <div class="val valExamples"><pre class="d_code notranslate"><span class="d_keyword">auto<ztpan>�4id = spawn( { <span class="d_keyword">assert</span>(<span class="d_psymbol">receiveOnly<ztpan>�i�vtring ==�!�!span class="d_string">"text"</span>); }); send(tid, <span class="d_string">"text"<ztpan>); <y:re> </div></div> <span class="dlang_runnable"></span><div class="keyval Examples"><span class="key keyExamples">Examples:<ztpan>�!�!div class="val�6alExamples"><pre class="d_code notranslate"><span class="d_keyword">struct</span> Record" string name; <span class="d_keyword">int<ztpan> age; } <span class="d_keyword">auto<ztpan>�4id = spawn( { <span class="d_keyword">auto</span> msg = <span class="d_psymbol">receiveOnly<ztpan>�Z<span class="d_keyword">double</span>, Record); <span class="d_keyword">assert</span>(msg[0] == 0.5); <span class="d_keyword">assert</span>(msg[o.name ==�!�!span class="d_string">"Alice"<ztpan>); �!�!span class="d_keyword">assert<ztpan>(msg[1].age == 2 21); }); send(tid, 0.5, Record(<span class="d_string">"Alice"<ztpan>, 0Ó0ë)); </pre> <u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".receiveTimeout"></span><div class="quickindex" id="quickindex.receiveTimeout"></div>bool�!�!span class="def-anchor" id="receiveTimeout"></span><code class="ddoc_psymbol">receiveTimeout</code><span class="template_param_list"�4itle="Template�0arameter list">(T...)<ztpan>(Duration <code class="ddoc_param">duration<uode>, T <code class="ddoc_param">ops</code>); <br></div></dt> <dd><div class="summary">Receives a message from another�4hread and gives up if no match arrives within a specified duration. <u(iv><div class="description">Receive a message from another�4hread, or block until <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">duration</code><ztpan> exceeds, if no messages of�4he specified�4ypes are available. This function works by pattern matching a message against a set of delegates and executing �4he first match found. <div class="blankline"><u(iv> If a delegate that accepts a�!�!a href="std_variant.html#.Variant"><span class="d_inlinecode donthyphenate notranslate">std.variant.Variant<ztpan></a> is included as �4he last argument, it�7ill match any message that�7as not matched by an earlier delegate. �!�?f more�4han one argument is sent, �4he�!�!span class="d_inlinecode donthyphenate notranslate">Variant<ztpan>�7ill contain a <a href="std_typecons.html#.Tuple"><span class="d_inlinecode donthyphenate notranslate">std.typecons.Tuple</span><tæ> of all�6alues sent. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">Duration <code class="ddoc_param">duration<uode></td> <td class="param_desc">Duration, how long to�7ait.�!�?f <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">duration</code><ztpan> is negative, won't wait at all.</td><zËr> <tr class="param"><td class="param_id">T <code class="ddoc_param">ops</code><zËd> <td class="param_desc">Variadic list of function pointers and delegates. Entries in this list must not occlude later entries.<zËd></tr> </table></div></div> <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns"><span class="d_inlinecode donthyphenate notranslate">true<ztpan> if it received a message and <span class="d_inlinecode donthyphenate notranslate">false</span> if it timed out waiting for one. </div></div> <div class="keyval Throws"><span class="key keyThrows">Throws:<ztpan>�!�!div class="val�6alThrows"><a href="#OwnerTerminated"><span class="d_inlinecode donthyphenate notranslate">OwnerTerminated<ztpan></a>�7hen the sending thread�7as�4erminated.</div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".OnCrowding"><ztpan><div class="quickindex" id="quickindex.OnCrowding"><u(iv>enum <span class="def-anchor" id="OnCrowding"><ztpan><code class="ddoc_psymbol">OnCrowding<uode>: int; <br><u(iv><u(t> <dd><div class="summary">These behaviors may be specified�7hen a mailbox is full.</div> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".OnCrowding.block"></span><div class="quickindex" id="quickindex.OnCrowding.block"></div><span class="def-anchor" id="block"></span><code class="ddoc_psymbol">block<uode><br></div></dt> <dd><div class="summary">Wait until room is available.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".OnCrowding.throwException"><ztpan><div class="quickindex" id="quickindex.OnCrowding.throwException"></div><span class="def-anchor" id="throwException"><ztpan><code class="ddoc_psymbol">throwException<uode><br></div></dt> <dd><div class="summary">Throw a�!�!a href="#MailboxFull"><span class="d_inlinecode donthyphenate notranslate">MailboxFull</span><tæ> exception.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".OnCrowding.ignore"><ztpan><div class="quickindex" id="quickindex.OnCrowding.ignore"></div><span class="def-anchor" id="ignore"><ztpan><code class="ddoc_psymbol">ignore<uode><br></div></dt> <dd><div class="summary">Abort�4he send and return.<u(iv> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".setMaxMailboxSize"></span><div class="quickindex" id="quickindex.setMaxMailboxSize"><u(iv>pure @safe void�!�!span class="def-anchor" id="setMaxMailboxSize"><ztpan><code class="ddoc_psymbol">setMaxMailboxSize</code>(Tid <code class="ddoc_param">tid</code>, size_t <code class="ddoc_param">messages<uode>, OnCrowding�!�!code class="ddoc_param">doThis</code>); <br></div></dt> <dd><div class="summary">Sets a maximum mailbox size. </div><div class="description">Sets a limit on�4he maximum number of�5ser messages allowed in the mailbox. If�4his limit is reached, the caller attempting to add a new message�7ill execute�4he behavior specified by doThis. If messages is�+ero,�4he mailbox is�5nbounded. <u(iv> <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">Tid <code class="ddoc_param">tid</code><zËd> <td class="param_desc">The Tid of�4he�4hread for which this limit should be set.<zËd></tr> <tr class="param"><td class="param_id">size_t <code class="ddoc_param">messages<uode></td> <td class="param_desc">The maximum number of messages or�+ero if no limit.</td><zËr> <tr class="param"><td class="param_id">OnCrowding�!�!code class="ddoc_param">doThis</code><zËd> <td class="param_desc">The behavior executed when a message is sent�4o a full mailbox.</td><zËr> <zËable><u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".setMaxMailboxSize.�(N �)><ztpan><div class="quickindex" id="quickindex.setMaxMailboxSize.2"></div>void�!�!span class="def-anchor" id="setMaxMailboxSize"><ztpan><code class="ddoc_psymbol">setMaxMailboxSize</code>(Tid <code class="ddoc_param">tid</code>, size_t <code class="ddoc_param">messages<uode>, bool function(Tid)�!�!code class="ddoc_param">onCrowdingDoThis</code>); <br></div></dt> <dd><div class="summary">Sets a maximum mailbox size. </div><div class="description">Sets a limit on�4he maximum number of�5ser messages allowed in the mailbox. If�4his limit is reached, the caller attempting to add a new message�7ill execute onCrowdingDoThis. If messages is�+ero,�4he mailbox is unbounded. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">Tid�!�!code class="ddoc_param">tid<uode></td> <td class="param_desc">The Tid of the thread for�7hich�4his limit should be set.</td><zËr> <tr class="param"><td class="param_id">size_t�!�!code class="ddoc_param">messages</code><zËd> <td class="param_desc">The maximum number of messages or zero if no limit.<zËd></tr> <tr class="param"><td class="param_id">bool function(Tid) <code class="ddoc_param">onCrowdingDoThis<uode></td> <td class="param_desc">The routine called when a message is sent�4o a full mailbox.</td><zËr> <zËable><u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".register"></span><div class="quickindex" id="quickindex.register"></div>bool�!�!span class="def-anchor" id="register"></span><code class="ddoc_psymbol">register</code>(string�!�!code class="ddoc_param">name</code>, Tid�!�!code class="ddoc_param">tid<uode>); <br><u(iv><u(t> <dd><div class="summary">Associates name with�4id. </div><div class="description">Associates name�7ith tid in a�0rocess-local map. 2 2 2 2hen the thread represented by�4id�4erminates, any names associated with it will be automatically�5nregistered. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">string <code class="ddoc_param">name<uode></td> <td class="param_desc">The name to associate�7ith tid.</td><zËr> <tr class="param"><td class="param_id">Tid <code class="ddoc_param">tid</code><zËd> <td class="param_desc">The tid register by name.<zËd></tr> </table></div></div> <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">true if the name is available and tid is not known�4o represent a defunct thread.<u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".unregister"></span><div class="quickindex" id="quickindex.unregister"></div>bool�!�!span class="def-anchor" id="unregister"></span><code class="ddoc_psymbol">unregister</code>(string�!�!code class="ddoc_param">name</code>); <br></div></dt> <dd><div class="summary">Removes�4he registered name associated with a�4id. </div><div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">string�!�!code class="ddoc_param">name</code><zËd> <td class="param_desc">The name�4o unregister.<zËd></tr> </table></div></div> <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">true if the name is registered, false if not.<u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".locate"></span><div class="quickindex" id="quickindex.locate"></div>Tid <span class="def-anchor" id="locate"><ztpan><code class="ddoc_psymbol">locate<uode>(string <code class="ddoc_param">name<uode>); <br><u(iv><u(t> <dd><div class="summary">Gets�4he�!�!span class="d_inlinecode donthyphenate notranslate">Tid<ztpan> associated with name. <u(iv><div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">string <code class="ddoc_param">name<uode></td> <td class="param_desc">The name to locate within�4he registry.</td><zËr> <zËable><u(iv><u(iv> <div class="keyval Returns"><span class="key keyReturns">Returns:<ztpan>�!�!div class="val�6alReturns">The associated <span class="d_inlinecode donthyphenate notranslate">Tid</span> or�!�!span class="d_inlinecode donthyphenate notranslate">Tid.init</span> if name is not registered.</div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".ThreadInfo"><ztpan><div class="quickindex" id="quickindex.ThreadInfo"><u(iv>struct <span class="def-anchor" id="ThreadInfo"><ztpan><code class="ddoc_psymbol">ThreadInfo<uode>; <br></div></dt> <dd><div class="summary">Encapsulates all implementation-level data needed for scheduling. <u(iv><div class="description">When defining a <a href="#Scheduler"><span class="d_inlinecode donthyphenate notranslate">Scheduler<ztpan></a>, an instance of�4his struct must be associated �7ith each logical�4hread. It contains all implementation-level information needed by the internal API.<u(iv> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".ThreadInfo.thisInfo"><ztpan><div class="quickindex" id="quickindex.ThreadInfo.thisInfo"></div>static nothrow @property ref auto <span class="def-anchor" id="thisInfo"><ztpan><code class="ddoc_psymbol">thisInfo<uode>(); <br></div></dt> <dd><div class="summary">Gets a thread-local instance of�!�!span class="d_inlinecode donthyphenate notranslate">ThreadInfo</span>. <u(iv><div class="description">Gets a�4hread-local instance of <span class="d_inlinecode donthyphenate notranslate">ThreadInfo<ztpan>, which should be used as the default instance when info is requested for a�4hread not created by�4he <span class="d_inlinecode donthyphenate notranslate">Scheduler</span>.</div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".ThreadInfo.cleanup"><ztpan><div class="quickindex" id="quickindex.ThreadInfo.cleanup"><u(iv>void <span class="def-anchor" id="cleanup"></span><code class="ddoc_psymbol">cleanup<uode>(); <br></div></dt> <dd><div class="summary">Cleans up�4his ThreadInfo. </div><div class="description">This must be called�7hen a scheduled thread�4erminates. It�4ears down �4he messaging system for the thread and notifies interested�0arties of �4he�4hread's termination.</div> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Scheduler"></span><div class="quickindex" id="quickindex.Scheduler"><u(iv>interface�!�!span class="def-anchor" id="Scheduler"><ztpan><code class="ddoc_psymbol">Scheduler</code>; <br><u(iv><u(t> <dd><div class="summary">A <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="Scheduler"><ztpan><code class="ddoc_psymbol">Scheduler</code><ztpan> controls how threading is�0erformed by spawn. <u(iv><div class="description">Implementing a�!�!span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="Scheduler"></span><code class="ddoc_psymbol">Scheduler<uode></span> allows�4he concurrency mechanism�5sed by�4his module to be customized according�4o different needs. By default, a call to spawn�7ill create a new kernel thread�4hat executes�4he supplied routine and�4erminates when finished. But it is possible�4o create�!�!span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="Scheduler"></span><code class="ddoc_psymbol">Scheduler<uode></span>s�4hat reuse�4hreads, that multiplex�!�!span class="d_inlinecode donthyphenate notranslate">Fiber<ztpan>s (coroutines) across a single�4hread, or any number of other approaches. By making the choice of <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="Scheduler"><ztpan><code class="ddoc_psymbol">Scheduler</code><ztpan> a user-level option,�!�!span class="d_inlinecode donthyphenate notranslate">std.concurrency<ztpan> may be used for far more types of application than if this behavior were�0redefined. </div> <div class="val"><p class="keyval Section"><span class="key keySection">Example</span> <pre class="d_code notranslate"><span class="d_keyword">import</span> std.concurrency; <span class="d_keyword">import<ztpan> std.stdio; <span class="d_keyword">void<ztpan> main() { scheduler = <span class="d_keyword">new<ztpan> FiberScheduler; scheduler.start( { writeln(<span class="d_string">"the rest of main goes here"<ztpan>); �(); } <y:re> <div class="blankline"><u(iv> Some schedulers have a dispatching loop that must run if�4hey are to�7ork �0roperly, so for the sake of consistency,�7hen using a scheduler,�!�!span class="d_inlinecode donthyphenate notranslate">start()<ztpan> must be called�7ithin <span class="d_inlinecode donthyphenate notranslate">main()<ztpan>. This yields control�4o the scheduler and �7ill ensure�4hat any spawned threads are executed in an expected manner.<y:><u(iv> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".Scheduler.start"><ztpan><div class="quickindex" id="quickindex.Scheduler.start"></div>abstract�6oid <span class="def-anchor" id="start"></span><code class="ddoc_psymbol">start<uode>(void delegate()�!�!code class="ddoc_param">op</code>); <br></div></dt> <dd><div class="summary">Spawns the supplied op and starts�4he�!�!span class="d_inlinecode donthyphenate notranslate">Scheduler<ztpan>. </div><div class="description">This is intended to be called at the start of�4he�0rogram�4o yield all scheduling to�4he active <span class="d_inlinecode donthyphenate notranslate">Scheduler</span> instance. This is necessary for schedulers�4hat explicitly dispatch threads rather�4han simply relying on�4he operating system to do so, and so start should always be called within�!�!span class="d_inlinecode donthyphenate notranslate">main()</span> to begin normal program execution. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">void delegate()�!�!code class="ddoc_param">op</code><zËd> <td class="param_desc">A wrapper for whatever�4he main thread�7ould have done in the absence of a custom scheduler. �!�?t will be automatically executed via a call�4o spawn by�4he�!�!span class="d_inlinecode donthyphenate notranslate">Scheduler<ztpan>.<zËd></tr> </table></div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Scheduler.spawn"></span><div class="quickindex" id="quickindex.Scheduler.spawn"><u(iv>abstract void�!�!span class="def-anchor" id="spawn"><ztpan><code class="ddoc_psymbol">spawn</code>(void delegate() <code class="ddoc_param">op<uode>); <br><u(iv><u(t> <dd><div class="summary">Assigns a logical thread�4o execute the supplied op. <u(iv><div class="description">This routine is called by spawn. It is expected�4o instantiate a new logical�4hread and run the supplied operation. This thread must call <span class="d_inlinecode donthyphenate notranslate">thisInfo.cleanup()<ztpan>�7hen the thread�4erminates if�4he scheduled�4hread is not a kernel�4hread--all kernel threads will have their <span class="d_inlinecode donthyphenate notranslate">ThreadInfo<ztpan> cleaned up automatically by a thread-local destructor. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">void delegate()�!�!code class="ddoc_param">op</code><zËd> <td class="param_desc">The function�4o execute. This may be the actual function passed by�4he�5ser to spawn itself, or may be a�7rapper function.</td><zËr> <zËable><u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".Scheduler.yield"><ztpan><div class="quickindex" id="quickindex.Scheduler.yield"></div>abstract nothrow�6oid <span class="def-anchor" id="yield"></span><code class="ddoc_psymbol">yield<uode>(); <br></div></dt> <dd><div class="summary">Yields execution to another logical�4hread. <u(iv><div class="description">This routine is called at various points�7ithin concurrency-aware APIs to�0rovide a scheduler a chance to�9ield execution�7hen using some sort of cooperative multithreading model. �!�?f this is not appropriate, such as when each logical thread is backed by a dedicated kernel�4hread, this routine may be a no-ap.</div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Scheduler.thisInfo"><ztpan><div class="quickindex" id="quickindex.Scheduler.thisInfo"><u(iv>abstract nothrow @property ref ThreadInfo�!�!span class="def-anchor" id="thisInfo"></span><code class="ddoc_psymbol">thisInfo</code>(); <br><u(iv><u(t> <dd><div class="summary">Returns an appropriate�!�!span class="d_inlinecode donthyphenate notranslate">ThreadInfo</span> instance. </div><div class="description">Returns an instance of <span class="d_inlinecode donthyphenate notranslate">ThreadInfo<ztpan> specific to�4he logical�4hread that is calling�4his routine or, if�4he calling�4hread was not create by �4his scheduler, returns�!�!span class="d_inlinecode donthyphenate notranslate">ThreadInfo.<span class="def-anchor" id="thisInfo"></span><code class="ddoc_psymbol">thisInfo</code><ztpan> instead.<u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".Scheduler.newCondition"></span><div class="quickindex" id="quickindex.Scheduler.newCondition"></div>abstract nothrow Condition�!�!span class="def-anchor" id="newCondition"></span><code class="ddoc_psymbol">newCondition</code>(Mutex <code class="ddoc_param">m</code>); <br></div></dt> <dd><div class="summary">Creates a�!�!span class="d_inlinecode donthyphenate notranslate">Condition<ztpan>�6ariable analog for signaling. </div><div class="description">Creates a new�!�!span class="d_inlinecode donthyphenate notranslate">Condition<ztpan>�6ariable analog�7hich is used�4o check for and �4o signal�4he addition of messages to a�4hread's message queue. Like yield, some schedulers may need to define custom behavior so�4hat calls �4o <span class="d_inlinecode donthyphenate notranslate">Condition.wait()<ztpan>�9ield�4o another thread�7hen no new messages are available instead of blocking. <u(iv> <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">Mutex <code class="ddoc_param">m</code><zËd> <td class="param_desc">The <span class="d_inlinecode donthyphenate notranslate">Mutex</span> that�7ill be associated with�4his condition. It�7ill be locked prior to any operation on the condition, and so in some cases a <span class="d_inlinecode donthyphenate notranslate">Scheduler</span> may need�4o hold�4his reference and unlock�4he mutex before yielding execution�4o another logical thread.<zËd></tr> </table></div></div> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".ThreadScheduler"></span><div class="quickindex" id="quickindex.ThreadScheduler"><u(iv>class�!�!span class="def-anchor" id="ThreadScheduler"><ztpan><code class="ddoc_psymbol">ThreadScheduler</code>:�!�!span class="ddoc_psuper_symbol">std.concurrency.Scheduler<ztpan>; <br></div></dt> <dd><div class="summary">An example <span class="d_inlinecode donthyphenate notranslate">Scheduler</span> using kernel�4hreads. </div><div class="description">This is an example <span class="d_inlinecode donthyphenate notranslate">Scheduler</span> that mirrors�4he default scheduling behavior of creating one kernel�4hread per call�4o spawn. It is fully functional and may be instantiated and used, but is not a necessary�0art of�4he default functioning of�4his module.<u(iv> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".ThreadScheduler.start"><ztpan><div class="quickindex" id="quickindex.ThreadScheduler.start"></div>void�!�!span class="def-anchor" id="start"><ztpan><code class="ddoc_psymbol">start</code>(void delegate() <code class="ddoc_param">op<uode>); <br><u(iv><u(t> <dd><div class="summary">This simply runs op directly, since no real scheduling is needed by �4his approach.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".ThreadScheduler.spawn"></span><div class="quickindex" id="quickindex.ThreadScheduler.spawn"><u(iv>void <span class="def-anchor" id="spawn"></span><code class="ddoc_psymbol">spawn<uode>(void delegate()�!�!code class="ddoc_param">op</code>); <br></div></dt> <dd><div class="summary">Creates a new kernel thread and assigns it to run�4he supplied op.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".ThreadScheduler.yield"></span><div class="quickindex" id="quickindex.ThreadScheduler.yield"><u(iv>nothrow�6oid <span class="def-anchor" id="yield"></span><code class="ddoc_psymbol">yield<uode>(); <br></div></dt> <dd><div class="summary">This scheduler does no explicit multiplexing, so this is a no-ap.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".ThreadScheduler.thisInfo"></span><div class="quickindex" id="quickindex.ThreadScheduler.thisInfo"></div>nothrow @property ref ThreadInfo�!�!span class="def-anchor" id="thisInfo"></span><code class="ddoc_psymbol">thisInfo</code>(); <br><u(iv><u(t> <dd><div class="summary">Returns <span class="d_inlinecode donthyphenate notranslate">ThreadInfo.<span class="def-anchor" id="thisInfo"><ztpan><code class="ddoc_psymbol">thisInfo<uode></span>, since it is a�4hread-local instance of �!�!span class="d_inlinecode donthyphenate notranslate">ThreadInfo</span>,�7hich is the correct behavior for�4his scheduler.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".ThreadScheduler.newCondition"></span><div class="quickindex" id="quickindex.ThreadScheduler.newCondition"></div>nothrow Condition <span class="def-anchor" id="newCondition"><ztpan><code class="ddoc_psymbol">newCondition<uode>(Mutex�!�!code class="ddoc_param">m<uode>); <br><u(iv><u(t> <dd><div class="summary">Creates a new <span class="d_inlinecode donthyphenate notranslate">Condition</span> variable. No custom behavior is needed here.<u(iv> </dd> </dl> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".FiberScheduler"><ztpan><div class="quickindex" id="quickindex.FiberScheduler"><u(iv>class�!�!span class="def-anchor" id="FiberScheduler"></span><code class="ddoc_psymbol">FiberScheduler</code>:�!�!span class="ddoc_psuper_symbol">std.concurrency.Scheduler<ztpan>; <br></div></dt> <dd><div class="summary">An example <span class="d_inlinecode donthyphenate notranslate">Scheduler</span> using <a href="core_thread_fiber.html"><span class="d_inlinecode donthyphenate notranslate">Fiber<ztpan>s<tæ>. <u(iv><div class="description">This is an example scheduler�4hat creates a new <span class="d_inlinecode donthyphenate notranslate">Fiber</span> per call�4o spawn and multiplexes�4he execution of all fibers�7ithin the main�4hread.</div> <dl><dt class="d_decl"><div ><span class="def-anchor" id=".FiberScheduler.start"><ztpan><div class="quickindex" id="quickindex.FiberScheduler.start"><u(iv>void <span class="def-anchor" id="start"></span><code class="ddoc_psymbol">start<uode>(void delegate()�!�!code class="ddoc_param">op</code>); <br></div></dt> <dd><div class="summary">This creates a new <span class="d_inlinecode donthyphenate notranslate">Fiber</span> for the supplied op and then starts the dispatcher.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".FiberScheduler.spawn"></span><div class="quickindex" id="quickindex.FiberScheduler.spawn"></div>nothrow void�!�!span class="def-anchor" id="spawn"><ztpan><code class="ddoc_psymbol">spawn</code>(void delegate() <code class="ddoc_param">op<uode>); <br><u(iv><u(t> <dd><div class="summary">This created a new�!�!span class="d_inlinecode donthyphenate notranslate">Fiber<ztpan> for�4he supplied op and adds it�4o the dispatch list.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".FiberScheduler.yield"><ztpan><div class="quickindex" id="quickindex.FiberScheduler.yield"><u(iv>nothrow�6oid <span class="def-anchor" id="yield"></span><code class="ddoc_psymbol">yield<uode>(); <br></div></dt> <dd><div class="summary">If the caller is a scheduled <span class="d_inlinecode donthyphenate notranslate">Fiber</span>,�4his yields execution�4o another scheduled�!�!span class="d_inlinecode donthyphenate notranslate">Fiber<ztpan>.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".FiberScheduler.thisInfo"></span><div class="quickindex" id="quickindex.FiberScheduler.thisInfo"><u(iv>nothrow @property ref ThreadInfo <span class="def-anchor" id="thisInfo"><ztpan><code class="ddoc_psymbol">thisInfo<uode>(); <br></div></dt> <dd><div class="summary">Returns an appropriate <span class="d_inlinecode donthyphenate notranslate">ThreadInfo<ztpan> instance. <u(iv><div class="description">Returns a <span class="d_inlinecode donthyphenate notranslate">ThreadInfo<ztpan> instance specific�4o the calling <span class="d_inlinecode donthyphenate notranslate">Fiber</span> if�4he <span class="d_inlinecode donthyphenate notranslate">Fiber</span> was created by�4his dispatcher, otherwise it returns <span class="d_inlinecode donthyphenate notranslate">ThreadInfo.<span class="def-anchor" id="thisInfo"><ztpan><code class="ddoc_psymbol">thisInfo<uode></span>.</div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".FiberScheduler.newCondition"></span><div class="quickindex" id="quickindex.FiberScheduler.newCondition"><u(iv>nothrow Condition�!�!span class="def-anchor" id="newCondition"></span><code class="ddoc_psymbol">newCondition</code>(Mutex <code class="ddoc_param">m</code>); <br></div></dt> <dd><div class="summary">Returns a�!�!span class="d_inlinecode donthyphenate notranslate">Condition<ztpan> analog that�9ields when�7ait or notify is called. <u(iv><div class="val"><p class="keyval Section"><span class="key keySection">Bug</span> For the default implementation, <span class="d_inlinecode donthyphenate notranslate">notifyAll</span> will behave like�!�!span class="d_inlinecode donthyphenate notranslate">notify</span>. </p></div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">Mutex�!�!code class="ddoc_param">m<uode></td> <td class="param_desc">A�!�!span class="d_inlinecode donthyphenate notranslate">Mutex<ztpan>�4o use for locking if�4he condition needs�4o be�7aited on or notified from multiple <span class="d_inlinecode donthyphenate notranslate">Thread<ztpan>s. If�!�!span class="d_inlinecode donthyphenate notranslate">null</span>, no <span class="d_inlinecode donthyphenate notranslate">Mutex</span> will be used and it is assumed�4hat the �!�!span class="d_inlinecode donthyphenate notranslate">Condition<ztpan> is only�7aited onwâotified from one�!�!span class="d_inlinecode donthyphenate notranslate">Thread</span>.</td><zËr> <zËable><u(iv><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".FiberScheduler.create"><ztpan><div class="quickindex" id="quickindex.FiberScheduler.create"></div>protected nothrow void�!�!span class="def-anchor" id="create"></span><code class="ddoc_psymbol">create</code>(void delegate() <code class="ddoc_param">op<uode>); <br><u(iv><u(t> <dd><div class="summary">Creates a new <span class="d_inlinecode donthyphenate notranslate">Fiber</span> which calls the given delegate. </div><div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">void delegate() <code class="ddoc_param">op<uode></td> <td class="param_desc">The delegate the fiber should call<zËd></tr> </table></div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".FiberScheduler.InfoFiber"><ztpan><div class="quickindex" id="quickindex.FiberScheduler.InfoFiber"><u(iv>class�!�!span class="def-anchor" id="InfoFiber"><ztpan><code class="ddoc_psymbol">InfoFiber</code>:�!�!span class="ddoc_psuper_symbol">core.thread.fiber.Fiber<ztpan>; <br></div></dt> <dd><div class="summary"><span class="d_inlinecode donthyphenate notranslate">Fiber<ztpan>�7hich embeds a <span class="d_inlinecode donthyphenate notranslate">ThreadInfo<ztpan></div> <u(d> <u(l> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".scheduler"><ztpan><div class="quickindex" id="quickindex.scheduler"></div>Scheduler <span class="def-anchor" id="scheduler"></span><code class="ddoc_psymbol">scheduler<uode>; <br></div></dt> <dd><div class="summary">Sets the <span class="d_inlinecode donthyphenate notranslate">Scheduler</span> behavior�7ithin the program. <u(iv><div class="description">This�6ariable sets�4he�!�!span class="d_inlinecode donthyphenate notranslate">Scheduler<ztpan> behavior within�4his program. Typically, when setting a�!�!span class="d_inlinecode donthyphenate notranslate">Scheduler<ztpan>, <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="scheduler"><ztpan><code class="ddoc_psymbol">scheduler</code>.start()<ztpan> should be called in�!�!span class="d_inlinecode donthyphenate notranslate">main</span>. This routine will not return until program execution is complete.</div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".yield"></span><div class="quickindex" id="quickindex.yield"><u(iv>nothrow�6oid <span class="def-anchor" id="yield"></span><code class="ddoc_psymbol">yield<uode>(); <br></div></dt> <dd><div class="summary">If the caller is a <span class="d_inlinecode donthyphenate notranslate">Fiber</span> and is not a�!�!a href="#Generator"><span class="d_inlinecode donthyphenate notranslate">Generator</span><tæ>,�4his function�7ill call <span class="d_inlinecode donthyphenate notranslate">scheduler.<span class="def-anchor" id="yield"><ztpan><code class="ddoc_psymbol">yield</code>()<ztpan> or <span class="d_inlinecode donthyphenate notranslate">Fiber.<span class="def-anchor" id="yield"><ztpan><code class="ddoc_psymbol">yield</code>()<ztpan>, as appropriate.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Generator"></span><div class="quickindex" id="quickindex.Generator"><u(iv>class�!�!span class="def-anchor" id="Generator"><ztpan><code class="ddoc_psymbol">Generator</code>(T): Fiber,�!�?sGenerator, InputRange�2 D�3; <br></div></dt> <dd><div class="summary">A�?�?enerator is a <a href="core_thread_fiber.html">Fiber</a> that�0eriodically returns values of type�!�!span class="d_inlinecode donthyphenate notranslate">T<ztpan>�4o the caller via <span class="d_inlinecode donthyphenate notranslate">yield</span>. This is represented as an InputRange.<u(iv><span class="dlang_runnable"></span><div class="keyval Examples"><span class="key keyExamples">Examples:<ztpan>�!�!div class="val�6alExamples"><pre class="d_code notranslate"><span class="d_keyword">auto</span> tid = spawn({ <span class="d_keyword">int<ztpan> i; <span class="d_keyword">while<ztpan> (i < 9) i = receiveOnly!<span class="d_keyword">int<ztpan>; ownerTid.send(i * 2); }); <span class="d_keyword">auto</span> r = <span class="d_keyword">new<ztpan>�!�!span class="d_psymbol">Generator</span>!<span class="d_keyword">int<ztpan>({ �!�!span class="d_keyword">foreach</span> (i; 1 .. 10) �9ield(i); }); <span class="d_keyword">foreach<ztpan> (e; r) tid.send(e); writeln(receiveOnly!<span class="d_keyword">int<ztpan>);�!�!span class="d_comment">/Xë <ztpan></pre> <u(iv><u(iv> <dl><dt class="d_decl"><div� <span class="def-anchor" id=".Generator.this"></span><div class="quickindex" id="quickindex.Generator.this"></div>this(void function()�!�!code class="ddoc_param">fn</code>); <br></div></dt> <dd><div class="summary">Initializes a generator object which is associated with a static D function. The function�7ill be called once�4o prepare the range for iteration. </div><div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">void function() <code class="ddoc_param">fn<uode></td> <td class="param_desc">The fiber function.</td><zËr> <zËable><u(iv><u(iv> <div class="val"><p class="keyval Section"><span class="key keySection">In</span> fn must not be null.</p></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Generator.this.�(N �)><ztpan><div class="quickindex" id="quickindex.Generator.this.�(N �)><u(iv>this(void function() <code class="ddoc_param">fn<uode>, size_t�!�!code class="ddoc_param">sz</code>); <br></div></dt> <dd><div class="summary">Initializes a generator object which is associated with a static D function. The function�7ill be called once�4o prepare the range for iteration. </div><div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">void function() <code class="ddoc_param">fn<uode></td> <td class="param_desc">The fiber function.</td><zËr> <tr class="param"><td class="param_id">size_t�!�!code class="ddoc_param">sz</code><zËd> <td class="param_desc">The stack size for�4his fiber.</td><zËr> <zËable><u(iv><u(iv> <div class="val"><p class="keyval Section"><span class="key keySection">In</span> fn must not be null.</p></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Generator.this.0»0ó0Á><ztpan><div class="quickindex" id="quickindex.Generator.this.0»0ó0Á><u(iv>this(void function() <code class="ddoc_param">fn<uode>, size_t�!�!code class="ddoc_param">sz</code>, size_t <code class="ddoc_param">guardPageSize</code>); <br></div></dt> <dd><div class="summary">Initializes a generator object which is associated with a static D function. The function�7ill be called once�4o prepare the range for iteration. </div><div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">void function() <code class="ddoc_param">fn<uode></td> <td class="param_desc">The fiber function.</td><zËr> <tr class="param"><td class="param_id">size_t�!�!code class="ddoc_param">sz</code><zËd> <td class="param_desc">The stack size for�4his fiber.</td><zËr> <tr class="param"><td class="param_id">size_t�!�!code class="ddoc_param">guardPageSize<uode></td> <td class="param_desc">size of�4he guard�0age to�4rap fiber's stack overflows. Refer�4o <a href="core_thread.html#.Fiber"><span class="d_inlinecode donthyphenate notranslate">core.thread.Fiber</span><tæ>'s documentation for more details.<zËd></tr> </table></div></div> <div class="val"><p class="keyval Section"><span class="key keySection">In<ztpan> fn must not be null.<y:><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".Generator.this.4"></span><div class="quickindex" id="quickindex.Generator.this.4"></div>this(void delegate()�!�!code class="ddoc_param">dg</code>); <br></div></dt> <dd><div class="summary">Initializes a generator object which is associated with a dynamic D function. The function will be called once to�0repare�4he range for iteration. <u(iv><div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">void delegate()�!�!code class="ddoc_param">dg</code><zËd> <td class="param_desc">The fiber function.<zËd></tr> </table></div></div> <div class="val"><p class="keyval Section"><span class="key keySection">In<ztpan> dg must not be null.<y:><u(iv> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".Generator.this.5"></span><div class="quickindex" id="quickindex.Generator.this.5"></div>this(void delegate()�!�!code class="ddoc_param">dg</code>, size_t <code class="ddoc_param">sz<uode>); <br><u(iv><u(t> <dd><div class="summary">Initializes a generator object�7hich is associated�7ith a dynamic D function. The function�7ill be called once�4o prepare the range for iteration. </div><div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">void delegate() <code class="ddoc_param">dg<uode></td> <td class="param_desc">The fiber function.</td><zËr> <tr class="param"><td class="param_id">size_t�!�!code class="ddoc_param">sz</code><zËd> <td class="param_desc">The stack size for�4his fiber.</td><zËr> <zËable><u(iv><u(iv> <div class="val"><p class="keyval Section"><span class="key keySection">In</span> dg must not be null.</p></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Generator.this.6"><ztpan><div class="quickindex" id="quickindex.Generator.this.6"><u(iv>this(void delegate() <code class="ddoc_param">dg<uode>, size_t�!�!code class="ddoc_param">sz</code>, size_t <code class="ddoc_param">guardPageSize</code>); <br></div></dt> <dd><div class="summary">Initializes a generator object which is associated with a dynamic D function. The function will be called once to�0repare�4he range for iteration. <u(iv><div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">void delegate()�!�!code class="ddoc_param">dg</code><zËd> <td class="param_desc">The fiber function.<zËd></tr> <tr class="param"><td class="param_id">size_t <code class="ddoc_param">sz<uode></td> <td class="param_desc">The stack size for this fiber.<zËd></tr> <tr class="param"><td class="param_id">size_t <code class="ddoc_param">guardPageSize</code><zËd> <td class="param_desc">size of the guard page�4o trap fiber's stack overflows. Refer to�!�!a href="core_thread.html#.Fiber"><span class="d_inlinecode donthyphenate notranslate">core.thread.Fiber<ztpan></a>'s documentation for more details.</td><zËr> <zËable><u(iv><u(iv> <div class="val"><p class="keyval Section"><span class="key keySection">In</span> dg must not be null.</p></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Generator.empty"></span><div class="quickindex" id="quickindex.Generator.empty"><u(iv>final @property bool <span class="def-anchor" id="empty"></span><code class="ddoc_psymbol">empty<uode>(); <br></div></dt> <dd><div class="summary">Returns�4rue if�4he generator is empty.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".Generator.popFront"></span><div class="quickindex" id="quickindex.Generator.popFront"></div>final void�!�!span class="def-anchor" id="popFront"></span><code class="ddoc_psymbol">popFront</code>(); <br><u(iv><u(t> <dd><div class="summary">Obtains the next�6alue from the underlying function.</div> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".Generator.front"><ztpan><div class="quickindex" id="quickindex.Generator.front"></div>final @property T <span class="def-anchor" id="front"></span><code class="ddoc_psymbol">front<uode>(); <br></div></dt> <dd><div class="summary">Returns�4he most recently generated�6alue by shallow copy.<u(iv> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".Generator.moveFront"></span><div class="quickindex" id="quickindex.Generator.moveFront"><u(iv>final T�!�!span class="def-anchor" id="moveFront"><ztpan><code class="ddoc_psymbol">moveFront</code>(); <br><u(iv><u(t> <dd><div class="summary">Returns the most recently generated value without executing a copy contructor. Will not compile for element�4ypes defining a �0ostblit, because�!�!span class="d_inlinecode donthyphenate notranslate">Generator<ztpan> does not return by reference.</div> <u(d> <u(l> <u(d> <dt class="d_decl"><div� <span class="def-anchor" id=".yield.�(N �)><ztpan><div class="quickindex" id="quickindex.yield.2"></div>void�!�!span class="def-anchor" id="yield"><ztpan><code class="ddoc_psymbol">yield</code><span class="template_param_list"�4itle="Template�0arameter list">(T)</span>(ref T <code class="ddoc_param">value</code>); <br><br>void�!�!span class="def-anchor" id="yield"><ztpan><code class="ddoc_psymbol">yield</code><span class="template_param_list"�4itle="Template�0arameter list">(T)</span>(T <code class="ddoc_param">value</code>); <br></div></dt> <dd><div class="summary">Yields a value of�4ype T to�4he caller of�4he currently executing generator. <u(iv><div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">T�!�!code class="ddoc_param">value<uode></td> <td class="param_desc">The�6alue�4o yield.</td><zËr> <zËable><u(iv><u(iv> <span class="dlang_runnable"><ztpan><div class="keyval Examples"><span class="key keyExamples">Examples:</span> <div class="val valExamples"><pre class="d_code notranslate"><span class="d_keyword">import<ztpan> std.range; InputRange!<span class="d_keyword">int<ztpan> myIota = iota(10).inputRangeObject; myIota.popFront(); myIota.popFront(); writeln(myIota.moveFront);�!�!span class="d_comment">/Xë�(�)</span>writeln(myIota.front); <span class="d_comment">]å 2 <ztpan>myIota.popFront(); writeln(myIota.front); <span class="d_comment">]å 2 2 <ztpan> <span class="d_comment">/uan be assigned�4o std.range.interfaces.InputRange directly <ztpan>myIota =�!�!span class="d_keyword">new</span> Generator!<span class="d_keyword">int<ztpan>( { <span class="d_keyword">foreach<ztpan> (i; 0 .. 10) <span class="d_psymbol">yield<ztpan>(i); }); myIota.popFront(); myIota.popFront(); writeln(myIota.moveFront);�!�!span class="d_comment">/Xë�(�)</span>writeln(myIota.front); <span class="d_comment">]å 2 <ztpan>myIota.popFront(); writeln(myIota.front); <span class="d_comment">]å 2 2 <ztpan> size_t[�3�3 counter = [0, 0]; <span class="d_keyword">foreach</span> (i, unused; myIota) counter[] += [1, i]; <span class="d_keyword">assert</span>(myIota.empty); writeln(counter);�!�!span class="d_comment">/Xë[7, �(h*�)] </span><y:re> </div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".initOnce"><ztpan><div class="quickindex" id="quickindex.initOnce"><u(iv>ref auto <span class="def-anchor" id="initOnce"><ztpan><code class="ddoc_psymbol">initOnce<uode><span class="template_param_list" title="Template parameter list">(alias�6ar)<ztpan>(lazy typeof(var) <code class="ddoc_param">init<uode>); <br><u(iv><u(t> <dd><div class="summary">Initializes <span class="d_param">var<ztpan>�7ith the lazy�!�!span class="d_param">init<ztpan>�6alue in a �4hread-safe manner. <u(iv><div class="description">The implementation guarantees that all�4hreads simultaneously calling initOnce with�4he same <span class="d_param">var<ztpan> argument block until <span class="d_param">var<ztpan> is fully initialized. All side-effects of <span class="d_param">init</span> are globally�6isible afterwards. <u(iv> <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">var<zËd> <td class="param_desc">The variable�4o initialize</td><zËr> <tr class="param"><td class="param_id">typeof(var) <code class="ddoc_param">init<uode></td> <td class="param_desc">The lazy initializer value<zËd></tr> </table></div></div> <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">A reference to�4he initialized�6ariable<u(iv><u(iv> <span class="dlang_runnable"><ztpan><div class="keyval Examples"><span class="key keyExamples">Examples:</span> <div class="val valExamples">A�4ypical�5se-case is�4o perform lazy but�4hread-safe initialization. <pre class="d_code notranslate"><span class="d_keyword">static<ztpan>�!�!span class="d_keyword">class</span> MySingleton { <span class="d_keyword">static</span> MySingleton instance() " �!�!span class="d_keyword">__gshared</span> MySingleton inst; <span class="d_keyword">return</span> <span class="d_psymbol">initOnce</span>!inst(<span class="d_keyword">new</span> MySingleton); } } <span class="d_keyword">assert<ztpan>(MySingleton.instance Àspan class="d_keyword">is<ztpan>�!�!span class="d_keyword">null<ztpan>); <y:re> </div></div> </dd> <dt class="d_decl"><div ><span class="def-anchor" id=".initOnce.�(N �)><ztpan><div class="quickindex" id="quickindex.initOnce.�(N �)><u(iv>ref auto <span class="def-anchor" id="initOnce"><ztpan><code class="ddoc_psymbol">initOnce<uode><span class="template_param_list" title="Template parameter list">(alias�6ar)<ztpan>(lazy typeof(var) <code class="ddoc_param">init<uode>, shared Mutex�!�!code class="ddoc_param">mutex<uode>); <br><br>ref auto <span class="def-anchor" id="initOnce"><ztpan><code class="ddoc_psymbol">initOnce<uode><span class="template_param_list" title="Template parameter list">(alias�6ar)<ztpan>(lazy typeof(var) <code class="ddoc_param">init<uode>, Mutex <code class="ddoc_param">mutex</code>); <br></div></dt> <dd><div class="summary">Same as above, but takes a separate mutex instead of sharing one among all initOnce instances. <u(iv><div class="description">This should be�5sed to avoid dead-locks when�4he�!�!span class="d_param">init<ztpan> expression�7aits for�4he result of another�4hread that might also call initOnce. Use with care. </div> <div class="keyval Parameters"><span class="key keyParameters">Parameters:<ztpan>�!�!div class="val�6alParameters"><table class="params"><tr class="param"><td class="param_id">var</td> <td class="param_desc">The�6ariable to initialize<zËd></tr> <tr class="param"><td class="param_id">typeof(var)�!�!code class="ddoc_param">init</code><zËd> <td class="param_desc">The lazy initializer�6alue</td><zËr> <tr class="param"><td class="param_id">Mutex <code class="ddoc_param">mutex</code><zËd> <td class="param_desc">A mutex to�0revent race conditions</td><zËr> <zËable><u(iv><u(iv> <div class="keyval Returns"><span class="key keyReturns">Returns:<ztpan>�!�!div class="val�6alReturns">A reference�4o the initialized variable</div></div> <span class="dlang_runnable"></span><div class="keyval Examples"><span class="key keyExamples">Examples:<ztpan>�!�!div class="val�6alExamples">Use a separate mutex�7hen init blocks on another�4hread that might also call initOnce. <pre class="d_code notranslate"><span class="d_keyword">import<ztpan> core.sync.<span class="d_param">mutex</span> : Mutex; <span class="d_keyword">static</span> <span class="d_keyword">shared</span> <span class="d_keyword">bool</span> varA, varB; <span class="d_keyword">static</span> <span class="d_keyword">shared</span> Mutex m; m =�!�!span class="d_keyword">new</span> <span class="d_keyword">shared</span> Mutex; spawn({ <span class="d_comment">]å�5se a different mutex for�6arB to avoid a dead-lock <ztpan> <span class="d_psymbol">initOnce</span>!varB(<span class="d_keyword">true<ztpan>, m); ownerTid.send(<span class="d_keyword">true</span>); }); <span class="d_comment">]å init depends on�4he result of�4he spawned�4hread </span><span class="d_psymbol">initOnce<ztpan>�v�i�iarA(receiveOnly!<span class="d_keyword">bool</span>); writeln(varA);�!�!span class="d_comment">/Xëtrue <ztpan>writeln(varB);�!�!span class="d_comment">/Xëtrue <ztpan></pre> <u(iv><u(iv> <u(d> <u(l> <div class="smallprint" id="copyright">Copyright�.�.�.copy; 99-2025 by�4he�!�!a href="..u‹oundation_overview.html">D Language Foundation</a>�= Page generated by <a href="..ztpec/ddoc.html">Ddoc<tæ> on Sun Sep 14 SD:55:05 2025 �<u(iv> </div> <u(iv> �!�!script�4ype="text/javascript" src="https:/tæjax.googleapis.comtæjax/libsv®query/1.7.�(W�)jquery.min.js"><ztcript> �!�!script�4ype="text/javascript">window.jQuery || document.write('\x3Cscript src="../jsv®query-1.7.�(‘Ñ�)min.js">\x0Þ0¤0¯0íztcript>');<ztcript> �!�!script�4ype="text/javascript" src="../jsu(lang.js"><ztcript> � <script type="textv®avascript" src="..v®s/codemirror-compressed.js"></script> <script type="textv®avascript" src="..v®s/run.js"></script> <script type="textv®avascript" src="..v®s/run_examples.js"><ztcript> <script type="textv®avascript" src="..v®s/listanchors.js"></script> <script type="textv®avascript" src="..v®s/show_contributors.js"></script> <script type="textv®avascript">jQuery(document).ready(listanchors);<ztcript> <link rel="stylesheet" href="https:]åmaxcdn.bootstrapcdn.com/font-awesome^.4.0ussu‹ont-awesome.min.css"> </body> </html> �<�/�d�i�v�>�<�d�i�v� �c�l�a�s�s�=�"�n�a�k�e�d�_�c�t�r�l�"�>� �<�f�o�r�m� �a�c�t�i�o�n�=�"�/�i�n�d�e�x�.�c�g�i�/�c�o�n�t�r�a�s�t�"� �m�e�t�h�o�d�=�"�g�e�t�"� �n�a�m�e�=�"�g�a�t�e�"�>� �<�p�>�<�a� �h�r�e�f�=�"�h�t�t�p�:�/�/�a�l�t�s�t�y�l�e�.�a�l�f�a�s�a�d�o�.�n�e�t�"�>�A�l�t�S�t�y�l�e�<�/�a�>� 0k0ˆ0c0fY cÛ0U0Œ0_0Ú0ü0¸� �<�a� �h�r�e�f�=�"�h�t�t�p�s�:�/�/�d�l�a�n�g�.�o�r�g�/�p�h�o�b�o�s�-�p�r�e�r�e�l�e�a�s�e�/�s�t�d�_�c�o�n�c�u�r�r�e�n�c�y�.�h�t�m�l�"�>�(�-�&�g�t�;0ª0ê0¸0Ê0ë�)�<�/�a�>� �/� �<�l�a�b�e�l�>0¢0É0ì0¹�:� �<�i�n�p�u�t� �t�y�p�e�=�"�t�e�x�t�"� �n�a�m�e�=�"�n�a�k�e�d�_�p�o�s�t�_�u�r�l�"� �v�a�l�u�e�=�"�h�t�t�p�s�:�/�/�d�l�a�n�g�.�o�r�g�/�p�h�o�b�o�s�-�p�r�e�r�e�l�e�a�s�e�/�s�t�d�_�c�o�n�c�u�r�r�e�n�c�y�.�h�t�m�l�"� �s�i�z�e�=�"�2�2�"� �/�>�<�/�l�a�b�e�l�>� �<�l�a�b�e�l�>0â0ü0É�:� �<�s�e�l�e�c�t� �n�a�m�e�=�"�n�a�k�e�d�_�p�o�s�t�_�m�o�d�e�"�>� �<�o�p�t�i�o�n� �v�a�l�u�e�=�"�d�e�f�a�u�l�t�"�>0Ç0Õ0©0ë0È�<�/�o�p�t�i�o�n�>� �<�o�p�t�i�o�n� �v�a�l�u�e�=�"�s�p�e�e�c�h�"�>—óXð0Ö0é0¦0¶�<�/�o�p�t�i�o�n�>� �<�o�p�t�i�o�n� �v�a�l�u�e�=�"�r�u�b�y�"�>0ë0ÓNØ0M�<�/�o�p�t�i�o�n�>� �<�o�p�t�i�o�n� �v�a�l�u�e�=�"�c�o�n�t�r�a�s�t�"� �s�e�l�e�c�t�e�d�=�"�s�e�l�e�c�t�e�d�"�>‘M‚rSÍŽâ�<�/�o�p�t�i�o�n�>� �<�o�p�t�i�o�n� �v�a�l�u�e�=�"�l�a�r�g�e�r�-�t�e�x�t�"�>e‡[WbáY'�<�/�o�p�t�i�o�n�>� �<�o�p�t�i�o�n� �v�a�l�u�e�=�"�m�o�b�i�l�e�"�>0â0Ð0¤0ë�<�/�o�p�t�i�o�n�>� �<�/�s�e�l�e�c�t�>� �<�i�n�p�u�t� �t�y�p�e�=�"�s�u�b�m�i�t�"� �v�a�l�u�e�=�"ˆhy:�"� �/�>� �<�/�p�>� �<�/�f�o�r�m�>� �<�/�d�i�v�>� � �