2015-07-12 61 views
0

我有兩個線程,每個線程都需要訪問一些共享對象。爲了保護這個對象的數據,我已經這樣定義它:在共享對象裏面使用RLock

class ShareObject: 
    def __init__(self): 
     self.mutex = threading.RLock() 
     self.data = None 

    def get(self): 
     self.mutex.acquire() 
     result = self.data 
     self.mutex.release() 
     return result 

    def set(self, data): 
     self.mutex.acquire() 
     self.data = data 
     self.mutex.release() 

這是使用互斥鎖保護共享數據的正確方法嗎?

回答

0

我認爲這是保護數據的正確方法。每一種更高級的風格都會與你所寫的相同。

我怎麼會寫它,它不相同,但更短:

如果getset是唯一的方法類有沒有人使用互斥屬性,你也可以把它寫這樣:

class ShareObject: 
    def __init__(self): 
     self.data = None 

    def get(self): 
     return self.data 

    def set(self, data): 
     self.data = data