【发布时间】:2016-10-16 03:18:55
【问题描述】:
我想使用纯文本文件作为我的应用程序的任务队列(用于写入数据库,尽管这无关紧要),其中:
- 我通过
echo "some task" >> task_queue.txt将一个项目添加到队列中 - 我以原子方式从队列中删除一个项目
对于 2。如果我在多个线程或进程中访问/修改 task_queue.txt,我不知道如何避免竞争条件。以下不是原子的:
ITEM=`head -1 task_queue.txt`
sed -i '1d' task_queue.txt
# process the item in the application
Bash 是否提供了比使用锁定文件更优雅的方式来做到这一点?我以前从未使用过flock,所以我不知道这是否很混乱(例如,当我的应用程序的任务处理失败时)。
【问题讨论】: