vibed - best approach to manage central state (cached records)

Laeeth Isharc via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 11 21:11:20 PDT 2015


On Sunday, 12 April 2015 at 02:54:27 UTC, Rikki Cattermole wrote:
> On 12/04/2015 7:24 a.m., Laeeth Isharc wrote:
>> Hi.
>>
>> Two questions:
>>
>> 1. On startup I load various indexes from file storage into 
>> memory in
>> the shared static this segment, and I would like to access 
>> these from
>> threads serving web requests.  The data can be considered 
>> immutable once
>> loaded.
>>
>> What is the best way to make this data accessible?  Obviously 
>> static
>> doesn't work as the threads have their own storage (I think 
>> this is what
>> is happening).  __gshared works, but is there a better 
>> approach?
>>
>>
>> 2. This works:
>>     auto router = new URLRouter;
>>     router.get("/pricebars",&renderPricebars);
>>     router.get("/names",&renderTickernames);
>>     router.registerRestInterface(new 
>> MarketDataAPIImplementation);
>>     auto settings = new HTTPServerSettings;
>>     settings.options=HTTPServerOption.parseQueryString;
>>     settings.port = 8080;
>>     listenHTTP(settings, router);
>>
>> But if I switch the REST registration and the static route 
>> registration
>> ("/pricebars" and "/names") then it segfaults. Reason for 
>> mixing regular
>> routes and REST is to be able to serve some data in CSV form.
>>
>> Thanks.
>
> The caches I use in e.g. web service frameworks use __gshared. 
> As long as they are readonly most of the time, and written in 
> one go. I see no problems threading wise.

Thanks.


Laeeth.


More information about the Digitalmars-d-learn mailing list