Boost logo

Boost :

Subject: Re: [boost] [asio] How to initialize a strand
From: Kyle Ketterer (reminisc3_at_[hidden])
Date: 2013-11-18 23:11:42

Thanks for clearing that up. I presume the better way to go out about I
want to do is to just pass the strand as a reference then I can use the
get_io_service method to retrieve a reference to the io_service.

On Mon, Nov 18, 2013 at 10:51 PM, Gavin Lambert <gavinl_at_[hidden]>wrote:

> On 19/11/2013 16:30, Quoth Kyle Ketterer:
> I am just curious - how you can you initialize an strand via assignment? I
>> am passing an strand by reference to an object so I have a reference
>> variable declared:
>> boost::asio::io_service::strand & strand_;
>> In the constructor I would like to assign the reference variable an
>> io_service (which has also been passed by reference).
>> I would like to initialize strand_ in a way such as this ( I know it
>> doesn't work)
>> strand_ = boost::asio::io_service::strand(io_service_);
> You can't do that. A strand must be given an io_service at construction
> time.
> If you want to accept a strand by reference in your constructor, that's
> fine (as long as the lifetime of the strand exceeds that of your object);
> it becomes the responsibility of whoever passes that strand in to
> initialise it with the correct io_service. You can't change this
> afterwards, because that would break the guarantees that the strand is
> trying to make.
> If you want to have a strand, but receive an io_service in your
> constructor instead, then you'll have to declare your member variable as a
> real object, not a reference. (And then verify that doing that still meets
> the guarantees that you presumably want from using a strand in the first
> place.)
> (And for future reference, the boost-user mailing list is where this sort
> of question should have been posted.)
> _______________________________________________
> Unsubscribe & other changes:
> mailman/listinfo.cgi/boost

Kyle Ketterer

Boost list run by bdawes at, gregod at, cpdaniel at, john at