2010-04-20 69 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

这本书确实详细介绍了它的作用?看起来像使用互斥锁提供安全访问的方法