Boost logo

Boost :

Subject: Re: [boost] Cooperative Multi-Tasking
From: Giovanni Piero Deretta (gpderetta_at_[hidden])
Date: 2010-03-04 08:11:15


On Thu, Mar 4, 2010 at 12:56 PM, Daniel Larimer <dlarimer_at_[hidden]> wrote:
>
> On Mar 4, 2010, at 5:50 AM, Giovanni Piero Deretta wrote:
>
>> On Thu, Mar 4, 2010 at 9:20 AM, Mathias Gaunard
>> <mathias.gaunard_at_[hidden]> wrote:
>>> Daniel Larimer wrote:
>>>
>>>> I am guessing that Boost.Asio would benefit from such a library.  It seems
>>>> obvious to me now that coroutines / cooperative multi-tasking is the
>>>> superior approach to solving problems with a large number of actors and
>>>> "locks" where heavy weight preemptive scheduling would bog down the system.
>>>
>>> A significant advantage of not using coroutines or fibers with Asio is that
>>> you use as little memory per task as you need, while using a coroutine
>>> requires having a stack and other context data.
>>>
>>
>> GCC supports (experimentally) split stacks
>> (http://gcc.gnu.org/wiki/SplitStacks ) to let a thread dynamically
>> grow and shrink its stack size (in principle with frame granularity).
>>
>> BTW, that project has been implemented to support goroutines in go.
>>
>
> My ultimate goal would be to achieve some what what go can do within C++. Unfortunately, go-like compile times will be impossible.
>
> Does anyone here know if Boost.Coroutine has variable (even compile time variable?) size stacks or what the default stack size of boost coroutine is?  I would likely want to play with it.  I remember reading someplace that on Windows you had no choice.

you can select the coroutine stack size at runtime. The default is
ridiculously low (1 page IIRC). On windows you can definitely chose
the fiber stack size. What you cannot do is use your own stack
allocator.

-- 
gpd

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk