I have now written a binding for the synchronous scheduler.
Not checked for GC compliance.
WIth this we can launch fthreads inside a function like this:
///////////////////
include "std/felix/sync";
open SyncControl;
noinline fun f():int = {
var lst = #fthread_list;
var sched = scheduler (lst);
proc a () {
println$ "An fthread a";
var ch = mk_schannel[string]();
spawn_fthread { println$ "Fthread b"; println$ read ch;};
spawn_fthread { println$ "Fthread c"; write (ch, "hello"); };
}
var clsa = cont a;
var fthr = fthread clsa;
push_back (lst,fthr);
println$ "Running scheduler ..";
run sched;
println$ "..Scheduler run";
delete sched;
delete lst;
return 1;
}
println$ f();
//////////////////
This is messy but can be cleaned up.
[
--
john skaller
[email protected]
http://felix-lang.org
------------------------------------------------------------------------------
Keep yourself connected to Go Parallel:
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language