2010-04-20 104 views
0

我在讀這本書:英特爾線程構建模塊。我常常難以理解它們。例如,以下代碼來自本書(第112頁):來自TBB的書代碼

Node* AllocateNode() { 
Node* n; 
FreeListMutexType::scoped_lock lock; 
lock.acquire(FreeListMutex); 
n=FreeList; 
if(n) 
Freelist=n->next; 
lock.release(); 
if(!n) 
n=new Node(); 

return n; 
} 

還有關於此代碼的其他介紹。我不明白。這是什麼意思?我怎樣才能更好地理解這本書?

+0

從來沒有聽說過這本書,但這是一個函數,它從節點的自由列表中取出一個節點,如果有的話,否則分配一個新的節點。你不明白哪一點代碼? – 2010-04-20 16:49:01

回答

1

理解代碼中發生的事情的關鍵是理解每個部分。確保你理解互斥鎖,線程和競爭條件的概念。還要確保你知道什麼對象FreeListMutex和FreeList是什麼,他們做什麼。你可能不得不去谷歌做一些研究,但是如果你瞭解了這些部分,你可以查看代碼的每個部分,並找出它在做什麼。

1

這本書確實詳細介紹了它的作用?看起來像使用互斥鎖提供安全訪問的方法