Wpis z mikrobloga

@WhirPool: @chiken: słabe rozwiązanie. Wyciągać wątki do czegoś takiego? Bez jaj...

Jak piszesz na linuxa to zainteresuj się kolego linuksowym select(), które potrafi nasłuchiwać w nieskończoność lub z określonym timeoutem, a w dodatku będzie o niebo lepsze niż startowanie wątków czy jakieś sleepy...

Więcej info w google lub na przykład tutal

@AferaZaAfera: Zakładam się że jednak nie pisze pod Linuxem I tu jego szczęście znikło. A nawet jak go przekonasz do Linuxa to nie przekonasz jego nauczyciela czy tam innego wykładowcę. Wiadomo że wątki to overkill ale pod Wingrozą API jest tak #!$%@? że nawet boost ASIO odpuściło poprawną implementację.

Szczególnie że std::thread jest już od paru lat, a nic z ASIO na razie niema.
@lionbest: akurat porównanie, że wątki już są, a ASIO nie ma trochę bez sensu, bo kiedy wątki dodawali chyba nawet nie było zgłoszonego *modułu* Networking TS (nad którym już trwają już od dawna prace i bodajże ma być dostępny jako TS w C++17). Także to wina po prostu tego, że jednocześnie nie potrafią zbyt wiele dodać i ciągnie się to latami...

No ale zgodzę się, pod linuxem jakoś tak dużo łatwiej
Może i by było ale std::future jest totalnym niedorozwojem


@lionbest: bo?

Future jest trochę biedne bo nie ma then... jeszcze. Niestety chyba w 17 nie dodają tego jeszcze (bieda w ch***), ale ogółem sama idea i wzorzec future/promise jest bardzo fajnym rozwiązaniem w programowaniu asynchronicznym.
@AferaZaAfera: Nie no fakt, teraz przeczytałem że pytanie było o zwykły timeout. Mimo wszystko wolałbym mieć waitfor przyjmujące std::future, oraz timer zwracający std::future.
@AferaZaAfera: Nom mnie najbardziej brakuje właśnie tego when_any bo zazwyczaj coś jeszcze asynchronicznie robisz i chcesz mieć możliwość sterowania z konsoli pomimo nie skończenia zadania, zachowując pełną gotowość na reakcję o zakończeniu zadania. Po prostu dwa zadania ścigające się.
@lionbest: no tak, when_any jeśli na wielu chcesz robić, ale na jednym starczy wait_for. Mi osobiście bardziej brakuje ... . then().then().... Łatwo można by robić łańcuchy handlerów na dane przy czym pisanie jakichś asynchronicznych serwerów było by baaardzo łatwe i bardzo efektywne. Oczywiście inne utilsy jak to when_any też się bardzo przydają... Aż wstyd, że tego nie dodali od razu I W DODATKU W C++17 RACZEJ TEGO ZABRAKNIE... Masakra!
@lionbest:
1. to było szybkie tech-demo żeby zaprezentować jak mniej-więcej to zrobić
2. singleton? rly?
3. Jak się chce to porządnie zrobić to powinno to działać np. tak:

pytasz o dane z wejścia z timeoutem T (lub bez timeoutu)

> sprawdzasz czy bufor ma jakieś dane,

>> jeśli tak to zwracasz te dane z bufora

>> jeśli nie to:

>>> dodajesz zadanie wczytania z wejścia danych z (lub bez) timeoutem T