Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
|
|
@ -0,0 +1 @@
|
|||
sleepsort←{{r}⎕TSYNC{r,←⊃⍵,⎕DL ⍵}&¨⍵,r←⍬}
|
||||
|
|
@ -3,7 +3,7 @@ import std.stdio, std.conv, std.datetime, core.thread;
|
|||
final class SleepSorter: Thread {
|
||||
private immutable uint val;
|
||||
|
||||
this(in uint n) {
|
||||
this(in uint n) /*pure nothrow*/ {
|
||||
super(&run);
|
||||
val = n;
|
||||
}
|
||||
|
|
@ -17,5 +17,5 @@ final class SleepSorter: Thread {
|
|||
void main(in string[] args) {
|
||||
if (args.length > 1)
|
||||
foreach (arg; args[1 .. $])
|
||||
(new SleepSorter(to!uint(arg))).start();
|
||||
new SleepSorter(arg.to!uint).start;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env escript
|
||||
%% -*- erlang -*-
|
||||
%%! -smp enable -sname sleepsort
|
||||
|
||||
main(Args) ->
|
||||
lists:foreach(fun(Arg) ->
|
||||
timer:send_after(5 * list_to_integer(Arg), self(), Arg)
|
||||
end, Args),
|
||||
loop(length(Args)).
|
||||
|
||||
loop(0) ->
|
||||
ok;
|
||||
loop(N) ->
|
||||
receive
|
||||
Num ->
|
||||
io:format("~s~n", [Num]),
|
||||
loop(N - 1)
|
||||
end.
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
procedure main(A)
|
||||
every insert(t:=set(),mkThread(t,!A))
|
||||
every spawn(!t) # start threads as closely grouped as possible
|
||||
while (*t > 0) do write(<<@)
|
||||
end
|
||||
|
||||
procedure mkThread(t,n) # 10ms delay scale factor
|
||||
return create (delay(n*10),delete(t,¤t),n@>&main)
|
||||
end
|
||||
|
|
@ -1,13 +1,15 @@
|
|||
extern mod std;
|
||||
use std::timer::sleep;
|
||||
use std::uv::global_loop;
|
||||
// rust 0.8
|
||||
|
||||
fn main() {
|
||||
for os::args().tail().each |&arg| {
|
||||
do task::spawn {
|
||||
let n = uint::from_str(arg).get();
|
||||
sleep(global_loop::get(), n);
|
||||
io::println(arg);
|
||||
fn main()
|
||||
{
|
||||
let args = std::os::args();
|
||||
for arg in args.tail().iter()
|
||||
{
|
||||
let n = from_str::<u64>(*arg).unwrap();
|
||||
do std::task::spawn
|
||||
{
|
||||
std::rt::io::timer::sleep(n);
|
||||
println!("{}", n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue