我有一个 QTablewView,它将数据存储为一个列表,该列表是模型的后端数据。
self.shots=[{'name':'abc010','taskdir','/show/abc/abc010','file':'xxx.ma'},
{'name':'abc020','taskdir','/show/abc/abc020','file':'yyy.ma'},
... ]
属性来自 3 个单独的name, taskdir,file
QThread,当我按下一个按钮时,会创建 3 个线程,它们会为我的 self.shots 列表的第一个元素获取结果,它们一个接一个地运行,然后我第二次按下按钮,另一个3 个线程返回列表中的第二个元素(字典)。等等。
所以基本上我的问题是在这种情况下我需要使用读写锁吗?我的线程正在写入同一个列表,(因为当前 3 个线程仍在运行时,我可能会再次按下按钮。)
目前我在不使用任何读写锁的情况下随机出现段错误。这是崩溃的原因吗?
谢谢,如果有人能给我一个关于如何使用读写锁的伪代码。
我正在使用这个通用线程函数来创建我的线程。
class GenericThread(QThread):
def __init__(self, function, *args, **kwargs):
QThread.__init__(self)
# super(GenericThread, self).__init__()
self.function = function
self.args = args
self.kwargs = kwargs
def __del__(self):
self.wait()
def run(self, *args):
self.function(*self.args, **self.kwargs)