mutex

    0熱度

    1回答

    下一個代碼通常打印BA,但有時它可以打印BBAA,BAAB,... ...這怎麼可能得到兩個A或B吧?但是,這段代碼從不打印三個A或B.這兩個函數(生產和消費)都運行很多線程。提前謝謝了。 int permission; void set_permission(int v) { permission = v; printf("%c", v + 'A');fflush(stdi

    3熱度

    3回答

    我在C++17中遇到std::shared_mutex。 std::shared_mutex究竟是什麼,它與std::mutex有什麼不同?

    0熱度

    1回答

    我正在學習專業C++第二版的第二十九章的單例設計模式。 它說明一個Logger類覆蓋線程安全要求的單執行: 頭 #include <iostream> #include <fstream> #include <vector> #include <string> #include <mutex> // Definition of a multithread safe singleton l

    0熱度

    1回答

    我正在處理此問題:從命令行獲取一個字母和相同文件的名稱,計算每個文件中char的出現次數,每個文件使用一個線程,以及打印出現的總次數。 這是我的代碼: typedef struct _CharFile{ char c; char *fileName; } CharFile; pthread_mutex_t count = PTHREAD_MUTEX_INITIALIZ

    2熱度

    2回答

    我發現這個code在代碼審查堆棧交換,它實現了生產者 - 消費者問題。我在這裏發佈一段代碼。 在給定的代碼,讓我們考慮一個場景時,製片人致電void add(int num)產生價值,它獲取的是互斥鎖mu和buffer.size()==size_這使得在等待隊列中的生產者進入,由於條件變量cond。 同時發生上下文切換並且消費者調用函數int remove()消耗值,它嘗試獲取互斥鎖mu上的鎖,但

    0熱度

    2回答

    我會盡我所能來解釋我的問題,但我對這一切都很陌生。我有一個Windows桌面Qt應用程序。只能運行一個應用程序實例。這通過main.cpp中的MSDN互斥量句柄來保證。 HANDLE mutex = CreateMutex(NULL, TRUE, lpName); if (mutex == NULL || GetLastError() == ERROR_ALREADY_EXISTS){

    0熱度

    1回答

    最近我才知道睡眠在linux內核中的系統調用會暫停當前調用線程到掛起/阻塞狀態,這意味着他們不會使用CPU,直到提到的時間過去。 - 完全理解。 現在來互斥和信號燈, 互斥鎖: acquire() { while (!available) ; // busy wait --> my doubt available = false;; } release() { available =

    0熱度

    2回答

    我試圖使用C++11的std::condition_variable來處理UI線程&工作者線程之間的數據事務。 情況: m_calculated_value是其中複雜的邏輯後算出的值。這是UI線程觸發事件所必需的。 UI線程調用MyClass::GetCalculatedValue來獲取m_calculated_value的值,該值需要由工作程序線程函數MyClass::ThreadFunctio

    1熱度

    2回答

    我有一個共享內存區域被兩個不同進程獨佔訪問的場景。當我啓動進程時,第一個進程成功鎖定互斥鎖,更新內存並解鎖互斥鎖。但我觀察到,當第二個進程試圖鎖定它時,它仍處於死鎖狀態,等待互斥鎖解鎖。 對於第一個和第二個進程,互斥鎖之間的時間差爲10秒。 我正在使用std :: mutex。請告訴我我錯過了什麼。

    0熱度

    2回答

    我基本上是問我是否在一個方法中獲得一個鎖並從該方法中調用第二個方法,第二個方法是否會保持獨佔內存訪問? 這是一些示例代碼。作爲參考,我使用pthreads編碼。 int count = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; method1() { pthread_mutex_lock(&mutex);