我目前正在处理与线程和锁定有关的问题。假设您具有一个具有以下功能的数据库:
- count(o):返回与查询o匹配的文档数
- find_many(o):o是一个字典,表示精确过滤器 在商店中匹配,并且此操作返回对象数组 匹配过滤器
- find_one(o):o是一个字典,表示完全匹配的过滤器 在商店中,此操作将返回与过滤器或无匹配的对象
- delete_insersts_on_failure(bulk_o):删除列表中的所有对象 bulk_o
- insert_many(bulk_o):将列表bulk_o中的对象插入数据库中
- insert_one(o):将对象o插入数据库中
- delete_one(o):
- delete_many(o):
- update_one(obj_filter,更新):
- update_many(obj_filter,更新):
因此,我必须使用这些数据库操作为执行一段代码的多个线程(对文本文件的写操作)实现一个锁定系统。
每个线程都有一个唯一的ID。
我解决这个问题的方法:由于每个线程都有一个唯一的ID,因此可以做的是,我们可以跟踪哪个线程当前持有锁的值(例如1)。所有其他试图获取该锁的线程锁也将以不同的数字(例如0)在数据库中。一旦持有锁的线程释放了锁,就可以选择值为0的线程,然后其中一个可以获取锁。
任何人都可以共享的任何资源(论文/书籍)将不胜感激。