mmeyer2k/semlock

信号量 + 封闭

1.0.1 2022-05-25 00:05 UTC

This package is auto-updated.

Last update: 2024-09-25 05:10:46 UTC


README

一种干净的方式来封装信号量,以执行代码的独占执行。Semlock 还允许使用描述性字符串而不是整数来命名信号量。

在这里阅读我关于这个工具的博客文章

https://mmeyer2k.github.io/posts/php-exclusive-execution-closure-semaphore

安装

composer require mmeyer2k/semlock

使用

基本用法

\mmeyer2k\SemLock::synchronize('some_key', function () {
    $x = get_number_from_database();

    $x++;

    sleep(5);

    save_number_to_database($x);
});

处理返回值

semlock 库将闭包的返回值传递回调用上下文。

$returned = \mmeyer2k\SemLock::synchronize('some_key', function () {
    return 'something';
});

# $returned === 'something'