2012-08-05 51 views
0

也許這聽起來很愚蠢,但我想在運行時動態創建一個SRWLocks向量/數組。下面的代碼編譯這兩種方式,但數組的東西不起作用。可能的問題應該是,我可以使用new運算符創建一個SRWLock對象嗎?SlimReaderWriter(SRW)鎖陣列(使用new運算符)

如果這不是如何完成的,那麼創建SRWLock對象數組的正確方法是什麼?

#include "stdafx.h" 
#include <ppl.h> 
#include <Windows.h> 
#include <iostream> 

using namespace std; 

#define NOT_WORKING 

int _tmain(int argc, _TCHAR* argv[]) 
{ 


#ifdef NOT_WORKING 

// The following doesn't work 
     SRWLOCK *lock = new SRWLOCK[2]; 

     int a = 10; 

     AcquireSRWLockExclusive(&lock[0]); 
     cout<<"Exclusive Lock Acquired"; 
     a++; 
     ReleaseSRWLockExclusive(&lock[0]); 


     // The following doesn't work either 

     /* 
     SRWLOCK *lock_n = new SRWLOCK; 


     AcquireSRWLockExclusive(lock_n); 
     cout<<"Exclusive Lock Acquired"; 
     a++; 
     ReleaseSRWLockExclusive(lock_n); 

     */ 

     #else 
// This works 
     SRWLOCK lock; 

     int a = 10; 
     AcquireSRWLockExclusive(&lock); 
     cout<<"Exclusive Lock Acquired"; 
     a++; 
     ReleaseSRWLockExclusive(&lock); 

#endif 
     cout<<"Value of a:"<<a; 
     cin.get(); 

     return 0; 
} 
+0

Got it!當動態創建鎖對象時,需要使用InitializeSRWLock()函數。有人貼上這個答案,並幫助我關閉這個問題。 – user1577008 2012-08-05 06:30:08

回答

0

User1577008自己的回答: Got it!當動態創建鎖對象時,需要使用InitializeSRWLock()函數。有人貼上這個答案,並幫助我關閉這個問題。

相關問題