mutex

    0熱度

    1回答

    例如,我想創建5個線程並打印它們。我如何在第二個之前執行第四個?我試着用互斥體鎖定它,但我不知道如何只鎖定第二個,所以它給了我分段錯誤。 char name1[]="THREAD1"; char name2[]="THREAD2"; char name3[]="THREAD3"; char name4[]="THREAD4"; char name5[]="THREAD5"; pthre

    -2熱度

    2回答

    信號量可以取代互斥: 初始化SEM用1個 鎖():做sem_wait(); (在關鍵部分sem = 0) unlock():do sem_post(1); 那麼爲什麼我們需要互斥鎖?

    3熱度

    2回答

    我正在使用用於小型USB設備的用戶模式驅動程序。我的USB讀取循環應該是非常敏感的,它執行的操作應該非常小(不必是原子的)。就像內核模式驅動程序中的中斷服務程序一樣。在一個處理過程中,我需要創建一個線程並將一些參數傳遞給該讀取循環內的那個線程。 所以我需要知道該操作的確切上限。它不會超過200mS,或類似的東西。 下一個替代方案是在設備初始化時間(探測時間)執行線程初始化,然後休眠該線程,等待直到

    0熱度

    1回答

    我正在嘗試編寫一個簡單的task類。它是一個圍繞std::future的包裝,它保持其狀態(not_started,running,completed),可以根據需要開始處理給定作業,並且可以重複返回其處理結果。 我也可以提供一些全局函數來處理這些任務。但是我有點卡在size_t wait_any(std::vector<task<T>>& tasks)函數中。這個函數被賦予一個任務向量,並且應該

    1熱度

    1回答

    目前我正在學習Linux上的POSIX線程。以下示例計算整數數組中有多少個3(int),它在CentOS 6.5上返回正確答案,但在macOS 10.12.4上返回錯誤答案。 #include <stdlib.h> #include <semaphore.h> #include <pthread.h> #include <unistd.h> #include <stdio.h> #de

    2熱度

    1回答

    我有一個程序將10個線程放到一個向量中,每個向量應該在完成前打印出一個字符5次('A'代表第一個線程,'B'爲第二個,等等)。我可以讓它們一次運行(使用detach())或讓它們一次運行一個(使用join())。現在我想用一個Mutex來限制每次允許打印的線程數爲2.我已經能夠聲明互斥鎖並將鎖定到位,但我不確定如何應用這樣的限制。任何人有任何想法如何進行? deque<int> q ; mute

    0熱度

    2回答

    我使用的MinGW 5.3.0加密++ 5.6.5: C:\MinGW>g++ -std=c++11 -s -D_WIN32_WINNT=0x0501 LOG.cpp -U__STRICT_ANSI__ Decclass.cpp \ -IC:\\MinGW\\ -IC:\\MinGW\\boost -LC:\\MinGW -lssl -lcrypto -lcryptopp -lgdi32 -lP

    0熱度

    2回答

    我的疑問涉及同步使用相同方法的不同類的線程的方式。我有兩個不同的類,ClientA和ClientB(顯然擴展了Thread)和一個Server類的方法。這兩個ClassA和ClassB線程必須使用此方法,但也有對接入不同的策略: 如果ClassA線程使用方法內部的資源,同一類的其他線程可以用它; 如果線程ClassB正在使用該方法,則沒有人(線程爲ClassA和ClassB)可以使用它(互斥)。

    1熱度

    2回答

    我明白我使用互斥體,但我不明白它是如何工作的。我的意思是它是如何工作的。 它在鎖定時如何排除其他線程或進程,它如何知道當前所有者等? 有人可以發佈關於它的好文章的鏈接嗎?我只是從程序員的角度發現它的工作原理,而不是它的實現。

    0熱度

    1回答

    假設我有訪問某個共享狀態時持有互斥鎖的代碼。在某些時候,我確定我需要創建一個新的線程,因此調用pthread_create,同時仍然保持互斥體。這被認爲是安全的嗎? 假設我的共享狀態是一個全局計數器,用於跟蹤成功創建的pthread的數量,另一個線程使用此計數器在屏幕上實時顯示信息。此外,我不希望pthread的數量超過某個最大值(例如,爲了確定性)。如果我在調用pthread_create之前增