Keyway一个简单的锁库

联合创作 · 2023-09-30 23:20

A simple lock file library.


Features


  • Provides mutual exclusion for scripts that require the same resource.


  • Requires three additional lines of code in your script, including sourcing the library.


  • Scripts using Keyway can be configured to either terminate or busy-wait if a resource is blocked.


  • Keyway will report when an external error was caught and there are lock files in the lock directory.



Usage:


  • acquire_lock_for "your_task_name"



    • If the resource is not locked, your task will execute, otherwise it will terminate.



  • acquire_spinlock_for "your_task_name"



    • If the resource is locked, your task will wait until the lock has been released before acquiring its own lock and executing.




Return Code Explanations:


  1. Your application was not able to acquire lock.


  2. There was some other problem:




  • Keyway could not create the lock directory.


  • Keyway could not create or remove a lock.



  • An error was caught and there are lock files in the lock directory.


  • An example:

    #!/bin/bash
    source keyway_lib.sh

    # optionally override the lock file directory
    LOCK_DIR="alt-lock-dir"

    # attempt to lock the shared resource
    acquire_lock_for "your_task_name"

    # if the lock was successful, execute the task
    echo "executing critical section"

    # release the lock when the task is done
    release_lock_for "your_task_name"

    GPRS_core_structure.png

    浏览 21
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    编辑 分享
    举报
    评论
    图片
    表情
    推荐
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    编辑 分享
    举报