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

Swoole\Coroutine\Lock

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

class.swoole-coroutine-lock.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека class.swoole-coroutine-lock.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Swoole\Coroutine\Lock

Референца за `class.swoole-coroutine-lock.php` со подобрена типографија и навигација.

class.swoole-coroutine-lock.php

Класата Swoole\Coroutine\Lock

(Нема достапни информации за верзијата, можеби е само во Git)

Вовед

Класата Swoole\Coroutine\Lock

Swoole 6.0.1 воведе корутинска брава што поддржува споделување помеѓу процеси и нишки. Оваа брава е дизајнирана со неблокирачко однесување и овозможува ефикасна синхронизација на корутини во средини со повеќе процеси и повеќе нишки. --enable-iouring Кога е компајлиран со опцијата io_uring futex и Linux јадрото ја поддржува функцијата io_uring futex, корутинската брава на Swoole имплементира синхронизација користејќи

Без io_uring futex. Во овој случај, корутините чекаат будење на бравата користејќи ефикасен механизам за редење, значително подобрувајќи ги перформансите.

, корутинската брава се враќа на механизам за спиење со експоненцијално враќање, каде што времето на чекање се зголемува за 2^n милисекунди (n е бројот на неуспеси) по секој неуспешен обид за стекнување на бравата. Иако овој пристап избегнува зафатено чекање, тој воведува дополнителен трошок за закажување на процесорот и латентност.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Корутинската брава е повторлива, дозволувајќи му на моменталното корутинско држење безбедно да извршува повеќе операции со бравата. onReceiveНе создавајте брави во функции за повикување како

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

, бидејќи ова ќе предизвика континуиран раст на меморијата и ќе доведе до истекување на меморијата.

Синопсис на класата

class Swoole\Coroutine\Lock {
/* Методи */
public function __construct(): void
public function lock(): bool
public function trylock(): bool
public function unlock(): bool
}

Примери

Пример #1 Основна употреба

<?php
use Swoole\Coroutine\Lock;
use
Swoole\Coroutine\WaitGroup;
use function
Swoole\Coroutine\go;
use function
Swoole\Coroutine\run;

$lock = new Lock();
$waitGroup = new WaitGroup();

run(function() use ($lock, $waitGroup) {
go(function() use ($lock, $waitGroup) {
$waitGroup->add();
$lock->lock();
sleep(1);
$lock->unlock();
$waitGroup->done();
});

go(function() use ($lock, $waitGroup) {
$waitGroup->add();
$lock->lock(); // Wait for the holding coroutine to unlock
sleep(1);
$lock->unlock();
$waitGroup->done();
});

echo
'Lock does not block the process';
$waitGroup->wait();
});

Содржина

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

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

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

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

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

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

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