Keyway一个简单的锁库

联合创作 · 2023-09-30

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

    浏览 3
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

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

    手机扫一扫分享

    编辑
    举报