|
Boost : |
Subject: Re: [boost] [Thread] Query: Stack Size
From: Anthony Williams (anthony.ajw_at_[hidden])
Date: 2010-07-29 04:23:49
Alapkumar Sinha <Alapkumar.Sinha_at_[hidden]> writes:
> I have modified the code as below. Can someone tell me if this changes are fine or not?
>
> void thread::start_thread()
> {
> thread_info->self=thread_info;
> // [AKS] Addded code to set the stack size to 2 MB
> size_t mystacksize;
> pthread_attr_init(&attr1); //attr1 is a global variable
> mystacksize =2097152;
> pthread_attr_setstacksize (&attr1, mystacksize);
> //[AKS] End of change
>
> int const res = pthread_create(&thread_info->thread_handle, &attr1, &thread_proxy, thread_info.get());
> if (res != 0)
> {
> thread_info->self.reset();
> boost::throw_exception(thread_resource_error());
> }
>
> }
It looks OK apart from the "attr1 is a global variable" part. That would
introduce a race condition in starting threads. Don't do that, just make
it local, or initialize it once (e.g. with call_once).
Anthony
-- Author of C++ Concurrency in Action http://www.stdthread.co.uk/book/ just::thread C++0x thread library http://www.stdthread.co.uk Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk 15 Carrallack Mews, St Just, Cornwall, TR19 7UL, UK. Company No. 5478976
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk