(No version information available, might only be in Git)
O Swoole 6.0.1 introduziu um bloqueio de corrotina que suporta compartilhamento entre processos e entre threads. Este bloqueio foi projetado com comportamento não bloqueante e permite a sincronização eficiente de corrotinas em ambientes multiprocessos e multithreads.
    Quando compilado com a opção --enable-iouring e o kernel Linux suporta
    o recurso io_uring futex, o bloqueio de corrotina do Swoole implementa a sincronização
    usando io_uring futex. Nesse caso, as corrotinas aguardam o despertar dos bloqueios usando
    um mecanismo de enfileiramento eficiente, melhorando significativamente o desempenho.
   
    Sem io_uring futex, o bloqueio da corrotina retorna a um mecanismo de espera exponencial
    em que o tempo de espera aumenta em 2^n milissegundos (n sendo o número de falhas)
    após cada tentativa frustrada de obter o bloqueio. Embora essa abordagem evite esperas ocupadas, ela introduz
    sobrecarga e latência adicionais de escalonamento da CPU.
   
O bloqueio da corrotina é reentrante, permitindo que a corrotina atualmente em espera execute com segurança múltiplas operações de bloqueio.
     Não crie bloqueios em funções de retorno como onReceive, pois isso causará
     crescimento contínuo e vazamentos de memória.
    
O bloqueio e o desbloqueio devem ser realizados na mesma corrotina, caso contrário, as condições estáticas serão quebradas.
Exemplo #1 Uso básico
<?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(); // Aguarda o desbloqueio da corrotina de retenção
        sleep(1);
        $lock->unlock();
        $waitGroup->done();
    });
    echo 'O bloqueio não bloqueia o processo';
    $waitGroup->wait();
});