mutex

    0熱度

    1回答

    有以下兩個變量之間的區別:我認爲他們是相同的,但在一個視頻,我看大約一個公式來讀/寫器的問題,它說,使用5信號燈,每個 Mutex m; Semaphore s = 1; 其中的價值從1開始。我覺得很有趣,因爲我認爲如果你的信號量爲1,那麼你只需要使用一個互斥量。

    1熱度

    1回答

    我試圖在Solaris 10上編譯單聲道。我已經嘗試了很多從2.11.4到今天最新的5.xx版本的版本。但我總是失敗。 我正在使用Sun-Fire-v240具有SPARC處理器的硬件。 此外,OS版本是的Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC 是我收到的問題是這樣的: checking for PTHREAD_MUTEX_RECURSIVE...

    -1熱度

    3回答

    我在繼承類中使用了互斥鎖,但似乎無法像我期望的那樣使用線程。請在下面的代碼看看: #include <iostream> #include <cstdlib> #include <pthread.h> // mutex::lock/unlock #include <iostream> // std::cout #include <thread> // std::thread #

    2熱度

    2回答

    我有可以在不同模式下打開的對象,其中包括讀寫。 如果你打開了它念你仍然可以調用 object->upgradeOpen(); 常見的做法是在我們的代碼調用 ​​ 當你寫完。 我通常會發現使用我在C++基礎知識中學到的互斥概念更容易,您可以在此互斥對象的構造函數和析構函數中完成此升級打開和降級打開。 class ObjectMutex{ public: ObjectMutex(con

    0熱度

    1回答

    Norvig聲稱,互斥鎖或解鎖操作只需要四分之一的時間從內存中獲取數據。 這個answer解釋說,一個互斥體基本上是一個標誌和一個等待隊列,它只需要幾條指令就可以在無人蔘與互斥體上翻轉標誌。 我認爲,如果不同的CPU或核心試圖鎖定該互斥體,它需要等待 高速緩存線被寫回內存(如果尚未發生)和自己的內存讀取以獲取標誌的狀態。那是對的嗎?與不同的CPU相比,如果它是不同的核心,它們有什麼區別? 因此,數

    1熱度

    1回答

    我基本上有三個關於OpenMp的問題。 Q1。 OpenMp是否提供互斥共享變量?考慮下面的三個嵌套循環的簡單矩陣乘法代碼,使用C++中的OpenMp並行化。這裏A,B和C是動態空間分配雙**類型的變量。線程數被適當分配一個值。 #pragma omp parallel { int tid = omp_get_thread_num(); int fraction = (n/threadCou

    -1熱度

    1回答

    在一個名爲Record的函數中,我創建了一個線程。讓線程函數被稱爲ThreadFn。 我希望Record等待,直到從ThreadFn開始的ThreadFn中的一段代碼完成。 我該怎麼做?我一直在與互斥體一起嘗試。但我不確定將CreateMutex放到哪裏以及放置ReleaseMutex的位置。 我嘗試以下。但它不起作用。 有一個全局變量 HANDLE ghMutex = NULL; 內Thre

    1熱度

    2回答

    我處理多線程項目,C++,我懷疑有關的std ::互斥 讓我們假設我有一個堆棧。 #include <exception> #include <memory> #include <mutex> #include <stack> struct empty_stack: std::exception { const char* what() const throw(); };

    3熱度

    1回答

    我正在將一個Windows設備驅動程序移植到Mac OS X.該Windows代碼使用KMUTEX。這是一個遞歸鎖,可以通過同一個線程多次獲取。其他線程必須等待獲取它,但如果發生超時,則採集將失敗。 I/O Kit的IORecursiveLock不會執行超時。我可以使用BSD鎖或馬赫鎖。內核的BSD部分提供了帶有msleep()和wakeup()的條件變量。 我不清楚條件變量是否會做我想要的。 B

    0熱度

    1回答

    我有一個共享的向量,它被兩個線程訪問。 線程A中的函數會插入向量中,並且線程B中的函數完全交換該向量以進行處理。 MovetoVec(PInfo* pInfo) { while(1) { if(GetSwitch()) { swapBucket->push_back(pInfo); toggles = t