Na tym filmie, jako wstęp do wątków, Cherno implementuje dokładnie to czego potrzebujesz :) Threads in C++
@Piotr Batko, wszystko okey, tylko jest jakaś opcja aby wpisywany tekst nie kolidował z tym co się wysyła?
Taki "prostacki" przykład. Usuń komentarz przy blokadach i zobacz jaka będzie różnica w wynikach. Przykład jest "anty" bo wymuszałem przeplot (w większości implementacji):
#include <iostream> #include <thread> #include <chrono> #include <mutex> namespace { std::mutex mtx; } void brumFunc() { for(auto i = 0; i < 10; ++i) { //std::unique_lock<std::mutex> l(mtx); for(auto c: { 'b', 'r', 'u', 'm', ' ' }) { std::this_thread::sleep_for(std::chrono::milliseconds(5)); std::cout << c; std::cout.flush(); } } } void trataFunc() { for(auto i = 0; i < 10; ++i) { //std::unique_lock<std::mutex> l(mtx); for(auto c: { 't', 'r', 'a', 't', 'a', ' ' }) { std::this_thread::sleep_for(std::chrono::milliseconds(5)); std::cout << c; std::cout.flush(); } } } int main() { auto tr1 = std::thread(brumFunc); auto tr2 = std::thread(trataFunc); for (auto t: {&tr1, &tr2}) { t->join(); } }
PS. Oczywiście tak nie polecam programować :) Ani to wydajne ani ładne.
93,732 zapytań
142,669 odpowiedzi
323,287 komentarzy
63,293 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj
Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.