digitalmars.D.learn - How to call receiveTimout? (std.concurrency)
- soul8o8 (39/39) Jun 29 2010 Hello!
Hello!
I'm trying to use receiveTimeout:
// =96=96=96=96
import std.stdio,=20
std.concurrency;=09
int main(string[] args){
receiveTimeout( 1000L, (int i){writefln("Received: =
%d",i);} ) ; =09
return 0;
}
// =96=96=96=96
(I removed all the surrounding code above that spawned threads etc.)
Compiler gives me:=20
=
/Library/Compilers/dmd2/osx/bin/../../src/phobos/std/concurrency.d(335): =
Error: mismatched tuple lengths, 2 and 1
I can't see what's wrong?
A look in concurrency.d shows:
// - - 8< - -
bool receiveTimeout(T...)( long ms, T ops )
{
static enum long TICKS_PER_MILLI =3D 10_000;
return mbox.get( ms * TICKS_PER_MILLI, ops );
}
// - - 8< - -
final void get(T...)( T ops )
{
static assert( T.length );
static if( isImplicitlyConvertible!(T[0], long) )
{
alias TypeTuple!(T[1 .. $]) Ops;
assert( ops[0] >=3D 0 );
long period =3D ops[0];
ops =3D ops[1 .. $]; // <=3D=3D=3D line 335
}
// - - 8< - -
(DMD v2.047, OSX 10.6.4)
BR
/soul
Jun 29 2010








soul8o8 <soul8o8 gmail.com>