From: Sam S. <sd...@gn...> - 2009-08-31 14:48:51
|
Vladimir Tzankov wrote: > When symbol is interned/uninterned - only symtabs change. On rehashes > new symtab is created - so all threads that have gained access to old > symtab will traverse it successfully (but will not see changes). > Problem (not sure that it's the only one) with previous code was that > sometimes the symtab stored in the state and its size may not be in > sync (search1 - it was possible after getting the symtab and before > the size - another thread to cause rehash). this functional (as in "no structure modifications") approach is convenient for MT, no doubt, but allocating a new symtab on each addition would degrade performance severely. > Oops. I've been experimenting and left it by mistake - sorry. it happens. :-) because of this, I always at least try to proofread my own patches before committing ("=" in *vc* buffer before C-x v v). |