
Am Tuesday 12 January 2010 21:39:16 schrieb vicente.botet:
In order to follow the discussion do you agree to post a clear proposal using your pages design?
the "pages" proposal was a result of our misunderstanding, I think a vector-based implementation is sufficient. here's a prototype implementation: http://www.boostpro.com/vault/index.php?action=downloadfile&filename=tss.hpp&directory=& it implements all functions of a thread_specific_ptr except for custom cleanup functions (for now). below is the result of operator*. thread_specific_ptr time complexities: constructor: constant destructor: constant average, occasional vector reallocation operator*: constant operator->: constant release(): constant get(): constant reset(): undefined. operations by the tss code itself are constant average, but it may call a user-supplied destructor or pthread functions. it also fixes the bug I posted in a previous mail. << prototype::thread_specific_ptr<int> ptr; int f(){ return *ptr; }
<< _Z1fv: .LFB4216: pushl %ebp .LCFI26: movl %gs:_ZN5boost9prototype6detail10tss_vectorE@NTPOFF, %edx movl ptr+4, %eax movl %esp, %ebp .LCFI27: popl %ebp movl (%edx), %edx leal (%eax,%eax,2), %eax movl (%edx,%eax,4), %eax movl (%eax), %eax ret