1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/parallel/parallel.channel.xml

129 lines
6.3 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 57c7669a1f5336cb17413e0b46540c52c77ee84f Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<reference xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="class.parallel-channel" role="class">
<title>Класс parallel\Channel</title>
<titleabbrev>parallel\Channel</titleabbrev>
<partintro>
<section>
<title>Небуферизованные каналы</title>
<simpara>
Небуферизованный канал будет блокироваться при вызовах <methodname>parallel\Channel::send</methodname> до тех пор, пока не появится получатель, и блокироваться при вызовах
<methodname>parallel\Channel::recv</methodname> до тех пор, пока не появится отправитель. Это означает, что небуферизованный канал - это не только способ обмена данными между задачами,
но и простой метод синхронизации.
</simpara>
<simpara>
Небуферизованный канал - это самый быстрый способ обмена данными между задачами, требующий наименьшего количества копирования.
</simpara>
</section>
<section>
<title>Буферизованные каналы</title>
<simpara>
Буферизованный канал не будет блокироваться при вызовах <methodname>parallel\Channel::send</methodname> до заполнения буфера, а вызовы
<methodname>parallel\Channel::recv</methodname> будут блокироваться до тех пор, пока в буфере есть данные.
</simpara>
</section>
<section>
<title>Замыкания поверх каналов</title>
<simpara>
Мощная особенность параллельных каналов состоит в том, что они позволяют обмениваться замыканиями между задачами (и средами выполнения).
</simpara>
<simpara>
Когда замыкание отправляется по каналу, оно буферизуется, не меняет буферизацию канала, передающего замыкание,
но оно влияет на статическую область видимости внутри замыкания: одно и то же замыкание, отправленное в разные среды выполнения или в одну и ту же среду выполнения,
не будет делиться своей статической областью.
</simpara>
<simpara>
Это означает, что всякий раз, когда выполняется замыкание, которое было передано каналом, статическое состояние будет таким, каким оно было при буферизации замыкания.
</simpara>
</section>
<section>
<title>Анонимные каналы</title>
<simpara>
Конструктор анонимного канала позволяет программисту избегать присвоения имён каждому каналу: parallel генерирует уникальное имя для анонимных каналов.
</simpara>
</section>
<section xml:id="parallel-channel.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>parallel\Channel</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<modifier>final</modifier>
<classname>parallel\Channel</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">Анонимный конструктор</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='anonymous']/descendant::db:methodsynopsis[not(@role='procedural')])">
<xi:fallback/>
</xi:include>
<classsynopsisinfo role="comment">Доступ</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='access']/descendant::db:methodsynopsis[not(@role='procedural')])">
<xi:fallback/>
</xi:include>
<classsynopsisinfo role="comment">Совместное использование</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='sharing']/descendant::db:methodsynopsis[not(@role='procedural')])">
<xi:fallback/>
</xi:include>
<classsynopsisinfo role="comment">Закрытие</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parallel-channel')/db:refentry/db:refsect1[@audience='close']/descendant::db:methodsynopsis[not(@role='procedural')])">
<xi:fallback/>
</xi:include>
<classsynopsisinfo role="comment">Константа для бесконечной буферизации</classsynopsisinfo>
<fieldsynopsis>
<modifier>const</modifier>
<varname>Infinite</varname>
</fieldsynopsis>
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
&reference.parallel.parallel.channel.construct;
&reference.parallel.parallel.channel.make;
&reference.parallel.parallel.channel.open;
&reference.parallel.parallel.channel.recv;
&reference.parallel.parallel.channel.send;
&reference.parallel.parallel.channel.close;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->