我有一個將數據存儲爲List的QTablewView,該列表是模型的後端數據。 QThread如何在tableview模型的共享列表上使用readwritelock?
self.shots=[{'name':'abc010','taskdir','/show/abc/abc010','file':'xxx.ma'},
{'name':'abc020','taskdir','/show/abc/abc020','file':'yyy.ma'},
... ]
的name, taskdir,file
屬性是從3獨立的QThread,當我按下一個按鈕,創建了3個線程,他們得到了我的self.shots列表中的第一個元素的結果,他們運行一個接一個,然後我再次點擊按鈕,另外3個線程返回列表中的第二個元素(字典)。等等。
所以基本上我的問題是我需要使用讀寫鎖在這種情況下?我的線程正在寫入同一個列表,(因爲當第一個3線程仍在運行時,我可能會再次按下按鈕。)
當前我在不使用任何readwritelocks的情況下隨機獲取segfault。這是墜毀的原因嗎?
如果有人能給我一個關於如何使用讀寫鎖定的僞代碼,非常感謝。
我正在使用此通用線程函數來創建我的線程。
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)