我需要從我不控制的線程中訪問線程ID(它位於異步回調函數中,並且可以從一組不同的線程中調用)。線程ID在性能方面是否很昂貴?
我想知道是否訪問線程ID在性能方面是昂貴的?
我打算從Windows使用boost::this_thread::get_id()
或GetCurrentThreadId()
。爲了說明問題,我需要準備好一些本地緩存陣列,以便當數據從我的回調中到達時,我計劃避免錯誤並鎖定每個線程使用本地緩存,並訪問正確的緩存使用線程ID。 另外,因爲數據的大小通常不一樣,所以我不能將它放在堆棧中,而且我希望避免始終創建和刪除堆數據。
我懷疑它有效果,但你可以簡單地測量這個 – nogard
'boot :: threads'只是Windows上Win32線程函數的一個包裝。除了可移植性之外,兩者之間幾乎沒有什麼區別。 – Will
擁有一個線程本地緩存會不會容易得多?讓編譯器擔心爲線程訪問正確的緩存。 – MSalters