Wpis z mikrobloga

#naukaprogramowania #programowanie #cpp

Jak w c++ można zrobić wczytywanie do zmiennej przez określony czas.
Na przykład cin (lub jakaś inna funkcja) czeka 20 sekund i jeśli użytkownik nic nie wpisze program leci dalej.
  • 24
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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

  • Odpowiedz
@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 z-----e ż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.
  • Odpowiedz
@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
  • Odpowiedz
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.
  • Odpowiedz
@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ę.
  • Odpowiedz
@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!
  • Odpowiedz
@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
  • Odpowiedz