Re: Improvents on agent,user-custom thread pool.
I just came across this thread (and also [1]) when I was googling for a way to customize the Clojure agents. Were any of these 'post 1.2' suggestions reconsidered since then? (I see they haven't been implemented yet). Marek. [1] https://groups.google.com/forum/?fromgroups#!topic/clojure-dev/qDfxSoesp4o On Monday, July 26, 2010 2:54:29 AM UTC+2, Alex Miller wrote: Hey Dennis, I suggested some of the same ideas here (http://tech.puredanger.com/ 2010/06/08/clojure-agent-thread-pools/http://tech.puredanger.com/2010/06/08/clojure-agent-thread-pools/) and Rich said that these seemed like good suggestions post-1.2. I think allowing you to modify the agent thread pools after construction seems possibly dangerous from a concurrency point of view, but maybe that would be ok. Alex On Jul 25, 3:47 am, dennis killme2...@gmail.com wrote: Agent use two thread pools to execute actions,send use a fixed thread pool (2+cpus threads),and send-off use a cached thread pool.These pools are global in clojure system. I think the Agent should allow users to customize the thread pool, if no custom, then use the global thread pool. Why do I need a custom thread pool? First, the default thread pool is global, send use the thread pool is a fixed size cpus +2, is likely to become the system bottleneck sometime. Although you can use the send-off, use the cache thread pool, but in a real world application, I can not use the cache thread pool, which will introduce the risk of OutOfMemoryError, normally I like to use a fixed-size thread pool. Second, the actions which global thread pool execute are from a variety of agents, the actions are not homogeneous, and can not maximize the efficient use of the thread pool, we hope that you can specify different agent to isolate a particular thread pool to maximize the use of thread pool . I think Agent could add two new functions: (set-executor! agent (java.util.concurrent.Executors/ newFixedThreadPool 2)) (shutdown-agent agent) set-executor! is to set the agent's custom thread pool,and shutdown- agent to shutdown the agent's custom thread pool. -- 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
Improvents on agent,user-custom thread pool.
Agent use two thread pools to execute actions,send use a fixed thread pool (2+cpus threads),and send-off use a cached thread pool.These pools are global in clojure system. I think the Agent should allow users to customize the thread pool, if no custom, then use the global thread pool. Why do I need a custom thread pool? First, the default thread pool is global, send use the thread pool is a fixed size cpus +2, is likely to become the system bottleneck sometime. Although you can use the send-off, use the cache thread pool, but in a real world application, I can not use the cache thread pool, which will introduce the risk of OutOfMemoryError, normally I like to use a fixed-size thread pool. Second, the actions which global thread pool execute are from a variety of agents, the actions are not homogeneous, and can not maximize the efficient use of the thread pool, we hope that you can specify different agent to isolate a particular thread pool to maximize the use of thread pool . I think Agent could add two new functions: (set-executor! agent (java.util.concurrent.Executors/ newFixedThreadPool 2)) (shutdown-agent agent) set-executor! is to set the agent's custom thread pool,and shutdown- agent to shutdown the agent's custom thread pool. -- 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
Re: Improvents on agent,user-custom thread pool.
Hey Dennis, I suggested some of the same ideas here (http://tech.puredanger.com/ 2010/06/08/clojure-agent-thread-pools/) and Rich said that these seemed like good suggestions post-1.2. I think allowing you to modify the agent thread pools after construction seems possibly dangerous from a concurrency point of view, but maybe that would be ok. Alex On Jul 25, 3:47 am, dennis killme2...@gmail.com wrote: Agent use two thread pools to execute actions,send use a fixed thread pool (2+cpus threads),and send-off use a cached thread pool.These pools are global in clojure system. I think the Agent should allow users to customize the thread pool, if no custom, then use the global thread pool. Why do I need a custom thread pool? First, the default thread pool is global, send use the thread pool is a fixed size cpus +2, is likely to become the system bottleneck sometime. Although you can use the send-off, use the cache thread pool, but in a real world application, I can not use the cache thread pool, which will introduce the risk of OutOfMemoryError, normally I like to use a fixed-size thread pool. Second, the actions which global thread pool execute are from a variety of agents, the actions are not homogeneous, and can not maximize the efficient use of the thread pool, we hope that you can specify different agent to isolate a particular thread pool to maximize the use of thread pool . I think Agent could add two new functions: (set-executor! agent (java.util.concurrent.Executors/ newFixedThreadPool 2)) (shutdown-agent agent) set-executor! is to set the agent's custom thread pool,and shutdown- agent to shutdown the agent's custom thread pool. -- 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