LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

Там вопрос был «продемонстрируй, что программы на tcl короче, чем на racket».

std::thread every(int sec, void(&f)())
{
    std::thread t { [&f]() { while(1) { f(); sleep(sec); } } };
    t.detach();
    return t;
}

    every(1, *[]() { puts("..."); });
    ... do stuff
every :: Int -> IO () -> IO (Async ())
every sec io = async $ forever $ io >> threadDelay (sec * 1000000)

  every 1 $ putStrLn "..."
  ... do stuff

думаю, на Racket будет так же - в concurrency всё нужно есть. Разве что может быть интересно насколько «лёгкие» его потоки (= OS thread, или что-то своё + , собственно, свой же event loop для IO).

Исправление quasimoto, :

Там вопрос был «продемонстрируй, что программы на tcl короче, чем на racket».

std::thread every(int sec, void(&f)())
{
    std::thread t { [&f]() { while(1) { sleep(sec); f(); } } };
    t.detach();
    return t;
}

    every(1, *[]() { puts("..."); });
    ... do stuff
every :: Int -> IO () -> IO (Async ())
every sec io = async $ forever $ io >> threadDelay (sec * 1000000)

  every 1 $ putStrLn "..."
  ... do stuff

думаю, на Racket будет так же - в concurrency всё нужно есть. Разве что может быть интересно насколько «лёгкие» его потоки (= OS thread, или что-то своё + , собственно, свой же event loop для IO).

Исходная версия quasimoto, :

Там вопрос был «продемонстрируй, что программы на tcl короче, чем на racket».

std::thread every(int sec, void(&f)())
{
    std::thread t { [&f]() { while(1) { sleep(1); f(); } } };
    t.detach();
    return t;
}

    every(1, *[]() { puts("..."); });
    ... do stuff
every :: Int -> IO () -> IO (Async ())
every sec io = async $ forever $ io >> threadDelay (sec * 1000000)

  every 1 $ putStrLn "..."
  ... do stuff

думаю, на Racket будет так же - в concurrency всё нужно есть. Разве что может быть интересно насколько «лёгкие» его потоки (= OS thread, или что-то своё + , собственно, свой же event loop для IO).