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