信号量组件

编辑本页

信号量组件

信号量组件进行管理信号量,一种提供对共享资源的独占访问的机制。

安装

1
作曲家需要symfony/信号量ob娱乐下载

请注意

如果在Symfony应用程序外部安装此组件,则必须要求ob娱乐下载供应商/ autoload.php文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。

使用

在计算机科学中,信号量是一种变量或抽象数据类型,用于控制并发系统(如多任务操作系统)中多个进程对公共资源的访问。主要的区别是信号量允许多个进程访问资源,而锁只允许一个进程访问资源。

属性创建信号量SemaphoreFactory类,这又需要另一个类来管理存储:

1 2 3 4 5 6 7 8
使用ob娱乐下载组件信号量SemaphoreFactory使用ob娱乐下载组件信号量商店RedisStore复述,复述();复述,->连接(“172.17.0.2”);商店RedisStore (复述,);工厂SemaphoreFactory (商店);

方法创建信号量createSemaphore()可以方法。它的第一个参数是表示锁定资源的任意字符串。它的第二个参数是允许的最大进程数。然后,调用获得()方法将尝试获取信号量:

1 2 3 4 5 6 7 8 9
/ /……信号量工厂->createSemaphore(可以“pdf-invoice-generation”2);如果信号量->获得()){//资源“pdf-invoice-generation”被锁定。//在这里您可以安全地计算和生成发票。信号量->release ();}

如果无法获取信号量,则该方法返回.的获得()方法可以安全地重复调用,即使已经获取了信号量。

请注意

与其他实现不同的是,Semaphore组件即使在为相同资源创建信号量实例时也能区分它们。如果一个信号量必须被多个服务使用,那么它们应该共享同一个信号量信号量实例返回的SemaphoreFactory: createSemaphore方法。

提示

如果您不显式地释放信号量,它将在实例销毁时自动释放。在某些情况下,跨多个请求锁定一个资源可能很有用。属性的第五个参数,可禁用自动释放行为createSemaphore()可以方法

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony 6.2支持通过苏禄人
ob娱乐下载Symfony 6.2支持通过Les-Tilleuls.coop