what you were suggesting, if I understand correctly, is re-implementing futures using agents instead of a thread pool.
send an action off to an agent to be run, return a promise, the action delivers to the promise when the action completes. derefing the promise blocks until the action is run to completion. submit a Runnable/Callable to an executor, receive a Future. calls to get on the future block until the Runnable/Callable runs to completion. http://www.phrases.net/phrase/6934 "Using agents when you want a thread pool gives the impression of ignorance." On Sun, Sep 11, 2011 at 12:24 AM, Laurent PETIT <laurent.pe...@gmail.com> wrote: > 2011/9/11 Kevin Downey <redc...@gmail.com> >> >> I hate to see agents used this way. If people want a thread pool they >> should either use the ones provided by clojure, or create their own. > > That's right, the "agents" part of my answer is more a hack. > But the more interesting point I wanted to bring to the table for the > brainstorming was the use of dataflow variables (via promise/deliver). I'd > be happy to have your thoughts on this, provided that you're able to choose > more delicate words/judgements than "smacks of ignorance", which, even if > there's a possibility that as a non native english speaker I'm interpreting > the wrong way, seem rude and hard to swallow. > >> >> Using agents when you want a thread pool smacks of ignorance. >> >> >> http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html >> >> You can tell when you should be using a threadpool/futures instead >> agents when you don't use an agent as an identity over a series of >> values. >> >> On Sat, Sep 10, 2011 at 11:14 PM, Laurent PETIT <laurent.pe...@gmail.com> >> wrote: >> > Hello, >> > Would it make sense to use instead promise/deliver, and enque >> > computations >> > in order in agents queues ? (worse parallelism, but more control over >> > the >> > number of threads ?) >> > >> > 2011/9/10 Illim <illminou...@gmail.com> >> >> >> >> I'm a clojure beginner and from the future api , the only way I found >> >> to create a future from another is to block the resulting future's >> >> thread with 'deref'. I'm a little bit afraid of exhausting my thread >> >> pool. >> >> For example: >> >> (def x (future 1)) >> >> (def y (future (+ 1 @x))) >> >> y will block and consume a thread during x computation. >> >> >> >> -- >> >> You received this message because you are subscribed to the Google >> >> Groups "Clojure" group. >> >> To post to this group, send email to clojure@googlegroups.com >> >> Note that posts from new members are moderated - please be patient with >> >> your first post. >> >> To unsubscribe from this group, send email to >> >> clojure+unsubscr...@googlegroups.com >> >> For more options, visit this group at >> >> http://groups.google.com/group/clojure?hl=en >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Clojure" group. >> > To post to this group, send email to clojure@googlegroups.com >> > Note that posts from new members are moderated - please be patient with >> > your >> > first post. >> > To unsubscribe from this group, send email to >> > clojure+unsubscr...@googlegroups.com >> > For more options, visit this group at >> > http://groups.google.com/group/clojure?hl=en >> >> >> >> -- >> And what is good, Phaedrus, >> And what is not good— >> Need we ask anyone to tell us these things? >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- And what is good, Phaedrus, And what is not good— Need we ask anyone to tell us these things? -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en