如何编写线程安全程序,使n元树在python中保持一致

如何编写线程安全程序,使n元树在python中保持一致,python,multithreading,thread-safety,python-multithreading,Python,Multithreading,Thread Safety,Python Multithreading,上次我有一个关于可锁定树的采访问题,其中一个树的节点可以被锁定,如果它的祖先没有被锁定,它的子节点也没有被锁定 我现在的问题是,我必须使这个程序线程安全 我使用了很多概念,但面试官给了我一个提示,我可以使用一些额外的变量来解决这个问题 我的代码如下。我在网上找不到任何与这个问题相关的文章。我希望你能帮助我 我的代码如下 导入线程 lock=threading.lock() 类可锁定(threading.Thread): 定义初始化(自身,父级): self.parent=parent self.

上次我有一个关于可锁定树的采访问题,其中一个树的节点可以被锁定,如果它的祖先没有被锁定,它的子节点也没有被锁定

我现在的问题是,我必须使这个程序线程安全

我使用了很多概念,但面试官给了我一个提示,我可以使用一些额外的变量来解决这个问题

我的代码如下。我在网上找不到任何与这个问题相关的文章。我希望你能帮助我

我的代码如下

导入线程
lock=threading.lock()
类可锁定(threading.Thread):
定义初始化(自身,父级):
self.parent=parent
self.locked=False
threading.Thread.\uuuuu init\uuuuuu(自)
self.lockedDescendents=0
def变异锁(自身,delim):
带锁:
自锁的
def突变锁定后代(自身、delim、祖先):
带锁:
祖先。锁定的祖先+=delim
def锁(自):
如果(自锁):
返回真值
如果(self.lockedDescendents>0):
返回错误
祖先=自父
而(祖先):
带锁:
如果(祖先锁定):
返回错误
祖先=祖先.parent
而(祖先):
自身突变锁定后代(1,祖先)
祖先=祖先.parent
自我变异锁定(真)
返回真值
def解锁(自动):
如果(非自锁):
返回错误
祖先=自父
而(祖先):
自身突变锁定后代(-1,祖先)
祖先=祖先.parent
自我变异锁定(错误)
返回真值
c=可锁定(无)
a=可锁定(c)
b=可锁定(c)
d=可锁定(a)
e=可锁定(b)
打印(a.lock())
打印(b.lock())
打印(a.unlock())
打印(如lock())
打印(d.lock())
树需要一致,如果两个线程发生冲突,我们可以杀死两个线程或杀死其中一个线程

  • 两个线程都可能同时发生故障,但它们不能同时以任何代价一起传递

您确定该代码有效吗?为什么要继承
threading.Thread
而不启动任何东西?--顺便说一句,文档禁止子类化
threading.Thread
和重写除
run
以外的任何方法。面试官接受了一些部分,希望我对代码稍加修改。这让我确信代码可能是正确的。他还说,不允许使用互斥、信号量等。这个问题也可以通过使用一些额外的变量来解决。任何关于如何使用额外变量使此树与线程保持一致的提示。