[Issue 4307] spawn()'ed thread doesn't terminate
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Nov 2 20:34:51 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4307
--- Comment #5 from Jonathan M Davis <jmdavisProg at gmx.com> 2010-11-02 20:33:50 PDT ---
Actually, the program I posted earlier was buggy (that's what I get for
simplifying code and not studying the simplified version enough, I guess).
Here's the corrected version:
import std.concurrency;
import std.stdio;
void main()
{
int currThreads = 0;
enum maxThreads = 6;
size_t totalThreads = 0;
auto recProc = (Tid tid)
{
writeln(++totalThreads);
--currThreads;
};
for(size_t i = 0; i < 1_000; ++i)
{
if(currThreads < maxThreads)
receiveTimeout(1, recProc);
else
receive(recProc);
spawn(&threadFunc, thisTid);
++currThreads;
}
while(currThreads > 0)
receive(recProc);
}
void threadFunc(Tid parentTid)
{
send(parentTid, thisTid);
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list