digitalmars.D.bugs - [Issue 8214] New: blocking option for TaskPool.finish()
- d-bugmail puremagic.com (22/22) Jun 09 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (42/42) Jun 09 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (13/13) Jun 09 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (11/11) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (13/13) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (9/9) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (17/17) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (7/7) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (6/6) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (8/8) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (8/8) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
- d-bugmail puremagic.com (7/7) Jun 17 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8214
http://d.puremagic.com/issues/show_bug.cgi?id=8214 Summary: blocking option for TaskPool.finish() Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: john neggie.net In std.parallelism, I have a simple need to block on all tasks in a pool being completed. (In my use case tasks don't return a value, and errors within a task are discarded.) Currently the only way to block would be to manually maintain a collection of all tasks added to a pool. I propose that TaskPool.finish() take a backwards-compatible option to block: finish(bool block=false) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 09 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 John Belmonte <john neggie.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dsimcha yahoo.com Looking at source I see the original version includes TaskPool.join() which has the desired behavior. However the method definition is disabled: https://github.com/D-Programming-Language/phobos/blob/master/std/parallelism.d#L3097 In 2011 dsimcha mentioned the join function [1]: "One thing Andrei mentioned that I'm really not sure about is what to do with TaskPool.join(). My example for it is still terrible, because I think it's an evolutionary artifact. It was useful in earlier designs that were never released and didn't have high-level data parallelism primitives. I never use it, don't have any good use cases for it and would be inclined to remove it entirely. Andrei seems to have some good use cases in mind, but he has not detailed any that I believe are reasonably implementable and I'm not sure whether they could be solved better using the higher-level data parallelism primitives." and "I put TaskPool.join() in a version(none) statement and removed all references to it from the documentation. If anyone has a compelling reason why this is useful (preferably with a good, short example), I'll add it back. Otherwise, it's gone, since IMHO it's an evolutionary artifact that makes sense in theory but that I can't think of a use for anymore in practice." Well, I have a use case :) I'm writing a D implementation of luaproc, the Lua share-nothing message passing framework described in "Exploring Lua for Concurrent Programming" [2]. The std.parallelism module nicely replaces several hundred lines of low level multithreading code in the original C implementation. The design requires a single queue of tasks serviced by multiple threads, where the tasks do not yield a return value (they only optionally schedule more tasks), and any errors within a task are discarded (i.e. exceptions don't need to be propagated to parent tasks). The design specifies a function which blocks on the completion of all tasks, and this is the only thing std.parallelism is missing. [1] http://forum.dlang.org/thread/imehn5$h78$1 digitalmars.com [2] http://www.inf.puc-rio.br/~roberto/docs/ry08-05.pdf -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 09 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 I do prefer this being an option to finish() rather than a separate join() function. We all understand what finish() does and it's not a stretch at all to accept that there's blocking and non-blocking invocations (as evidenced by current doc needing to clearly state that it's non-blocking). Also I don't think the docs need a big example for the blocking case. It should suffice to say that blocking invocation only makes sense when task results aren't needed (otherwise the corresponding Task.*Force() calls would provide the blocking). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 09 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 John Belmonte <john neggie.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|nobody puremagic.com |john neggie.net https://github.com/D-Programming-Language/phobos/pull/634 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 Commits pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/01cd4f3eed7809080a5ef0f51387b588f1f55b2e Issue 8214 - blocking option for TaskPool.finish() Add backwards compatible blocking option to finish(). Remove disabled join() method. Add unit tests for finish(). https://github.com/D-Programming-Language/phobos/commit/a1e79c76335aff5cacd2c259265ae3ca4921500a Issue 8214 - blocking option for TaskPool.finish() -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 John Belmonte <john neggie.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 Brad Roberts <braddr puremagic.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED CC| |braddr puremagic.com Resolution|FIXED | --- The std.parallelism tests aren't passing reliably (though also not failing consistently either) any more, on most platforms after this was committed. freebsd/32, linux/*, osx/64/32: core.exception.AssertError std.parallelism(4061): unittest failure So far, no win/32 or freebsd/64 failures, but I suspect it's only a matter of time. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 Addressing flaky test: https://github.com/D-Programming-Language/phobos/pull/636 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 braddr: would you kindly add me to while list for pull auto-tester? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 --- You were already. Both this pull and the previous one ran through the auto tester, and show(ed) failures. You're not done fixing things yet based on the current test results for this pull request. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 Ack. I've disabled the failing assert as I don't have a good solution offhand. I don't feel too bad about disabling this particular assert since this was a test I added for existing library behavior. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8214 dsimcha has pull request addressing test issue in a similar way https://github.com/D-Programming-Language/phobos/pull/637 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 17 2012