pg_try_advisory_lock_shared()

一个用于尝试获取共享会话级建议锁的函数

pg_try_advisory_lock_shared() 是一个系统函数,用于尝试获取共享会话级 建议锁。如果无法获取锁,它会立即返回。

pg_try_advisory_lock_shared() 是在 PostgreSQL 8.2 中添加的。

用法

pg_try_advisory_lock_shared ( key bigint ) → void
pg_try_advisory_lock_shared ( key1 integer, key2 integer ) → void

如果成功获取锁,则返回 true,否则返回 false

pg_advisory_lock_shared() 不同,pg_try_advisory_lock_shared() 会立即返回,而不会等待锁可用。

变更历史

示例

pg_try_advisory_lock_shared() 的基本用法示例

postgres=# SELECT pg_try_advisory_lock(123);
 pg_try_advisory_lock
----------------------
 t
(1 row)

当另一个会话持有所需的锁时执行 pg_try_advisory_lock_shared()

postgres=# SELECT pg_backend_pid();
 pg_backend_pid
----------------
        3905353
(1 row)

postgres=# SELECT locktype, database, objid, objsubid, mode, pid, granted, fastpath
             FROM pg_locks
            WHERE locktype = 'advisory';
 locktype | database | objid | objsubid |     mode      |   pid   | granted | fastpath
----------+----------+-------+----------+---------------+---------+---------+----------
 advisory |        5 |   123 |        1 | ExclusiveLock | 3905277 | t       | f
(1 row)

postgres=# SELECT pg_try_advisory_lock_shared(123);
 pg_try_advisory_lock_shared
-----------------------------
 f
(1 row)

请注意,如果另一个会话也持有共享锁,则锁请求会成功。

分类

锁定, 系统函数

另请参阅

pg_advisory_lock_shared(), pg_advisory_unlock_shared(), pg_advisory_unlock_all(), pg_advisory_lock(), 建议锁

反馈

提交关于“pg_try_advisory_lock_shared()”的任何评论、建议或更正 在此处