D Language 2.0
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Jan 18 07:17:35 PST 2010
Nick Sabalausky wrote:
[snip]
> It's been no worse at threading than C/C++ for quite some time. It's just
> starting to have a threading model that kicks the crap out of the threading
> in the vast majority of languages out there.
BTW, that effort is going quite well. For example, a producer-consumer
file copy program using the proposed API has 20 lines, correctness and all.
import std.algorithm, std.concurrency, std.stdio;
void main() {
enum bufferSize = 1024 * 100;
auto tid = spawn(&writer);
// Read loop
auto src = stdin.by!(ubyte)();
for (;;) {
auto buffer = UniqueArray!(ubyte)(bufferSize);
auto length = copy(take(src, bufferSize), buffer).length;
send(tid, move(buffer));
if (length == 0) break;
}
}
void writer() {
// Write loop
auto tgt = stdout.by!(ubyte)();
for (;;) {
auto buffer = receiveOnly!(UniqueArray!ubyte)();
copy(buffer, tgt);
}
}
Andrei
More information about the Digitalmars-d
mailing list