Boost C++でSleep sort

Sleep sortについて

ソートしたい対象
t = [8, 2, 4, 5]
があるとする。
tにおけるi番目のt[i]だけsleepさせた後にt[i]を出力するとソートしたことになる。
ただし、全要素に対して同時にsleepをかけなければならない。

ソースコード

Sleep sortをC++のBoostで実装した。

https://gist.github.com/982060

#include <iostream>
#include <boost/lexical_cast.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/bind.hpp>
#include <boost/thread.hpp>

using namespace std;
using namespace boost;

/*
Sleep sort (http://dis.4chan.org/read/prog/1295544154)
$ ./slee_sort 8 2 4 5
2
4
5
8

only positive number
*/

void sleep_and_print(double ms)
{
    this_thread::sleep(posix_time::milliseconds(ms));
    cout << ms << endl;
}

int main(int argc, char *argv[])
{
    thread_group t;
    
    for(int i = 1; i < argc; i++) {
        double ms;
        try {
            ms = lexical_cast<double>(argv[i]);
        }
        catch(...) {
            continue;
        }
        t.create_thread(bind(sleep_and_print, ms)); 
    }

    t.join_all();
}

改良

上記のコードはコメントをいただいて改良したもの
http://twitter.com/#!/cpp_akira/status/71368689248763904

改良点はSleep処理の回避策を無くしたコード