with_advisory_lock:ActiveRecord的建议锁定

时间:2024-02-22 22:37:11
【文件属性】:

文件名称:with_advisory_lock:ActiveRecord的建议锁定

文件大小:26KB

文件格式:ZIP

更新时间:2024-02-22 22:37:11

mysql ruby activerecord postgres postgresql

with_advisory_lock 与或一起使用时,将ruby 2.4、2.5和2.6的咨询锁定(mutexes)添加到ActiveRecord 4.2、5.x和6.0。 SQLite求助于文件锁定。 什么是“咨询锁”? 咨询锁是一种用于确保没有两个进程同时运行某个进程。 当咨询锁由您的数据库服务器提供动力时,只要它不是SQLite,那么您的互斥锁就会跨越主机。 用法 该gem自动在所有ActiveRecord模型中包括WithAdvisoryLock模块。 这是一个如何使用它的示例,其中User是ActiveRecord模型,而lock_name是一些字符串: User . with_advisory_lock ( lock_name ) do do_something_that_needs_locking end 会发生什么 线程将无限期等待,直到获得锁为止。 在块内时,您将完全拥有咨询锁。 即使在块中引发了异常,锁定也会在块结束后释放。 锁定等待超时 with_advisory_lock将选项哈希作为第二个参数。 timeout_seconds选项默认为nil ,


【文件预览】:
with_advisory_lock-master
----gemfiles()
--------activerecord_6.0.gemfile(338B)
--------activerecord_5.2.gemfile(350B)
--------activerecord_5.1.gemfile(350B)
--------activerecord_5.0.gemfile(350B)
--------activerecord_4.2.gemfile(370B)
----.tool-versions(11B)
----tests.sh(226B)
----LICENSE.txt(1KB)
----lib()
--------with_advisory_lock()
--------with_advisory_lock.rb(500B)
----Gemfile(254B)
----Rakefile(297B)
----.travis.yml(714B)
----test()
--------nesting_test.rb(3KB)
--------concern_test.rb(550B)
--------minitest_helper.rb(895B)
--------options_test.rb(2KB)
--------thread_test.rb(2KB)
--------transaction_test.rb(2KB)
--------test_models.rb(505B)
--------lock_test.rb(1KB)
--------parallelism_test.rb(2KB)
--------database.yml(350B)
--------shared_test.rb(3KB)
----README.md(6KB)
----Appraisals(570B)
----.gitignore(171B)
----CHANGELOG.md(5KB)
----with_advisory_lock.gemspec(1KB)

网友评论