In JavaScript, everything is much simpler. In Node, there are no threads,
no such problems.
>From your question, especially "thread-local / request-local" I think you
are talking about a server, maybe an http server, maybe another protocol.
Either way, what you want is very simple in Node. For http, for example, in
standard http module provided, every request is processed by a call that is
given two two objects: request and response. Whatever you attach to these
as properties/methods, are private to this request and not shared by other
requests. You can also declare variables in your callback function and use
them as parameters to other functions you will call during your request
processing workflow.
In summary, only the variables that are declared in global scope (outside
of body of any function) or others that are attached to those global-scope
objects are shared between request callbacks. Other than these, everything
you will declare inside your functions will be accessible only from inside
that call.
You can always make local variables accessible globally by *providing paths
to them*:
var requests = [];
http.Server(function(req, res) {
// req and res are what you want, already provided. They are
request-local.
requests.push(req); // here we provide a way for others to access this
private from outside.
});
JavaScript is a simple language. Its objects are flexible, powerful; and
also very simple. Java programming is more about bureaucracy (things
enforced by design) while JavaScript is all about socially acceptable
behavior (things recommended by convention).
On Monday, July 2, 2012 2:45:54 AM UTC-4, Gaurav Vaish wrote:
>
> Hi,
>
> What is the best way to implement a thread-local / request-local
> storage?
>
> Basically, I am looking at a way to implement per-request-singleton
> object definition.
>
> (ThreadLocal:
> http://docs.oracle.com/javase/6/docs/api/java/lang/ThreadLocal.html)
>
>
>
> --
> Happy Hacking,
> Gaurav Vaish
> www.m10v.com
>