raii

    1熱度

    2回答

    我有一個資源存儲對象,住在一個多線程應用程序。爲了(希望)確保線程安全,每次我想要訪問資源或插入新資源時,都會鎖定互斥鎖。例如,插入一個新的資源: void ResourceManager::insertResource(const std::string& id) { // create the object with such ID Resource res = Reso

    0熱度

    1回答

    我正在使用CComPtr來保存com對象的指針。 我還包裹着一類資源: class ResourceWrapper { public: ResourceWrapper() { CoInitializeEx(NULL, COINIT_MULTITHREADED); HRESULT hr = S_OK; if (FAILED(hr = CoC

    1熱度

    2回答

    我有一個C#對象,它是resposible一個的ressource它看起來像這樣: public sealed class CLoadingScope { private bool isDisposed; public CLoadingScope() {} ~CLoadingScope() { // must be dis

    5熱度

    2回答

    我有一些需要線程安全和異常安全的代碼。下面的代碼是我的問題的一個非常簡化的版本: #include <mutex> #include <thread> std::mutex mutex; int n=0; class Counter{ public: Counter(){ std::lock_guard<std::mutex>guard(mutex);

    13熱度

    1回答

    隨着在Java 7中引入的try-with-resource,我驚訝地發現Lock未被改裝成AutoCloseable。這似乎是很簡單的,所以我下面增加它自己: class Lock implements AutoCloseable { private final java.util.concurrent.locks.Lock _lock; Lock(java.util.con

    9熱度

    5回答

    我有一個類可以在其構造函數中拋出異常。我如何在try/catch塊中聲明該類的實例,同時仍然可以在正確的範圍內使用它? try { MyClass lMyObject; } catch (const std::exception& e) { /* Handle constructor exception */ } lMyObject.DoSomething(); // lMyObject n

    0熱度

    2回答

    據我所知,std :: string是一個RAII對象,所以我不需要在聲明後進行初始化。構造函數會自動處理這些東西。但是在任何平臺或任何編譯器中是否有任何異常? class TestString { public: TestString() { // m_str.clear(); or // m_str = ""; } virtu

    1熱度

    4回答

    我想刪除舊的應用程序的所有刪除和刪除[],並使用智能指針。在下面的代碼片段中,我想刪除最後一個cicle。 std::unique_ptr<MapiFileDesc> fileDesc(new MapiFileDesc[numFiles]); for (int i = 0; i < numFiles; ++i) { // Works but I've to delete[] at

    2熱度

    2回答

    我想實現一個類,說Foo,這是繼RAII和類的對象返回到由價值客戶,即 class SomeClass { public: class Foo { public: ~Foo() { /* follow raii */ } private: friend class SomeClass; Foo() { /* follow raii

    7熱度

    2回答

    我有一個RAII類: template<typename T> class RAII { public: explicit RAII(T* p = 0): p_(p){} ~RAII() {delete p_;} T& operator*() const { return p_;} T* operator‐>() const