[C++]Cout i cin jednocześnie


(IcyMat) #1

Witam.

Mam do napisania projekt zaliczeniowy i mam w zasadzie już wszystko oprócz jednej rzeczy. Otóż piszę prosty czat i mam już podział na wątki (do odczytywania i wysyłania wiadomości), ale nie mogę sobie poradzić z jednym problemem. Chciałbym, żeby w chwili nadejścia nowej wiadomości wyświetlała się ona od razu. Jednak jest to niemożliwe ze względu na to, że kod std::cin<<buffor; czeka na wprowadzenie wiadomości do wysłania. Kiedy wyślę jakąś wiadomość program wtedy "odbiera" wiadomości i je wyświetla.

Chciałbym, żeby wyświetlanie działało "niezależnie" od oczekiwania na wprowadzenie wiadomości.

 

Z góry dziękuję za pomoc

IcyMat


(Xenvl) #2

No to tak zrób :smiley:


(ktoś tam) #3

A jakby w jednym wątku wypisywać, a w drugim wczytywać?


(kostek135) #4

No inaczej się nie da jeśli strumienie są blokujące.


(fedora24x) #5

Możesz dwa wątki uruchomić na dwóch różnych portach? Ewentualnie, zrobić coś na wzór przerwania/wyjątku,

aby jeden watek zasypiał na czas przerwania (drugiego wątku)?


(Manonim93) #6

Jeżeli wyświetlasz to zwyczajnie w konsoli to słabo. Jedyne co to chyba lepiej użyć jakiejś biblioteki która umie wyświetlić bogatsze rzeczy w konsoli. Do głowy przychodzi mi tylko ncurses.


(fedora24x) #7

Tworzysz program konsolowy, który uruchamia dwa wątki na dwóch różnych portach i potem tworzysz coś do przerwań i tyle?