PHP.mk документација

Филозофија

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

philosophy.parallel.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека philosophy.parallel.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Филозофија

Референца за `philosophy.parallel.php` со подобрена типографија и навигација.

philosophy.parallel.php

Филозофија

Овој дел содржи филозофии важни за пишување паралелен код и некои детали за внатрешната имплементација на паралелно.

Не комуницирајте со споделување меморија; наместо тоа, споделете меморија со комуникација.

Оваа филозофија, која е прифатена од паралелно, има потекло во Go, една од најшироко восхитуваните, ако не и најкористените платформи за пишување паралелен код во моментов. Програмерите на Go мораат да работат напорно за да го исполнат овој идеал: PHP и паралелно ја вршат целата напорна работа за програмерот, и тоа по дифолт.

Во конвенционалните модели на нишки што се наоѓаат во други јазици, генерално нишките комуницираат меѓу себе преку ништо повеќе од фактот што работат во истиот адресен простор. Програмерот мора да користи меѓусебно исклучување, променливи за услови и други примитиви за нишки или синхронизација на ниско ниво за да обезбеди правилна комуникација на состојбата и конзистентност.

Кога конвенционалниот модел е инверзиран, тоа значи дека нишките споделуваат меморија само како резултат на комуникација (на пример, променлива се пренесува преку канал).

Кога паралелно пренесува променлива од една нишка во друга на кој било начин - аргументи на задача, враќање преку Future и канали - таа се пренесува по вредност. Во сите случаи освен случајот со нетампонирани канали, променливата е исто така тампонирана за да не може да се промени (или уништи) пред да се користи во која било нишка на која се пренесува променливата. Читањето од нетампониран канал е единствениот случај во кој нишка директно чита меморија доделена од друга нишка, тоа може да го направи безбедно бидејќи нишката што ја поседува меморијата чека читањето да заврши пред да продолжи да ја манипулира, а нишката што не ја поседува меморијата чита по вредност. Кога и двете нишки продолжуваат, тие повеќе не споделуваат меморија.

Ова го прави пишувањето и расудувањето за паралелен код многу полесно отколку конвенционалниот модел на нишки. Тоа значи дека програмерот не треба да размислува дека нишките можеби истовремено манипулираат со податоци, бидејќи тоа не е можно.

Ова исто така го прави PHP совршена платформа за имплементирање на API за паралелна конкурентност базиран на CSP (пропуштање пораки преку канали), бидејќи самиот PHP е споделен ништо - PHP нишките работат во својот виртуелен адресен простор по дифолт, и затоа можат да споделуваат меморија само со комуникација.

Податоците треба да имаат дефинитивен единствен сопственик

Кога се пристапува кон CSP моделот за прв пат, програмер кој е вешт во традиционалниот модел на нишки може да се најде себеси барајќи структури на податоци што се споделуваат истовремено, бидејќи тоа е она на што се навикнати: тие пренесуваат споделени објекти за манипулација.

Кога станува збор за CSP моделот, нема потреба структурите на податоци да бидат споделени од многу задачи, и навистина, поедноставно е ако не се. Податоците треба да бидат во сопственост на една задача, промените на (или операциите врз) тие податоци треба да се комуницираат преку канали и да се извршуваат од сопственикот на податоците, успехот, неуспехот или резултатот (состојбата) од промената (или операцијата) да се комуницираат назад.

Уште еднаш, природата на PHP што споделува ништо и природата на паралелното копирање по вредност му помагаат на програмерот да ја постигне оваа цел, податоците нема да бидат споделени случајно, само како резултат на комуникација.

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.