簡體   English   中英

調用相同功能的多線程

[英]multithreading with calling the same function

我想到這個問題,有人問用C ++編寫代碼。 因此,我需要使用C ++同步原語。

問:創建一個接受整數作為參數的方法(例如foo)並在控制台上打印。 該方法由多個線程訪問。 如果兩個或多個線程使用相同的值調用該方法,則僅一個線程應允許打印該值,其他線程應等待。 如果值不同,則所有線程都應允許打印該值。

我的建議是使用全局哈希表,例如unordered_map(i,semaphore)映射。 因此,當調用foo(i)時,foo檢查哈希表。 如果我不在哈希表中,則添加map [i] = semaphore(0)。 當我打印時,map [i] .release()被調用以允許其他等待輸入的線程繼續他們的打印操作。 另一方面,如果i已經在哈希中,則意味着其他具有相同輸入的線程正在運行,因此應通過map [i] .aquire()等待。

希望您能幫助我找到更好的解決方案或此提案的更正版本。

使用Windows函數和靜態全局互斥鎖的示例。

static HANDLE hMutex;    // initialized elsewhere
// ...

void DisplayInt(int value)
{
    WaitForSingleObject(hMutex);
    // ... check value and display message
    ReleaseMutex(hMutex);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM