Wątki
Ostatnio zmodyfikowano 2016-12-17 16:55
Warmix Temat założony przez niniejszego użytkownika |
Wątki » 2016-12-16 00:25:10 Korzystając z biblioteki SFML będę w aplikacji ładować trochę tekstur, chciałbym to zrobić hurtem podczas uruchamiania aplikacji, ale (jeszcze nie wiem, ale przypuszczam), że pewnie trochę może to zająć, to by nie sprawiać wrażenia zaciętej aplikacji, chciałbym wyrzucić na ekran komunikat o ładowaniu grafik, które "w tle" by się ładowały. Znalazłem funkcję w samym SFML do obsługi wątków, ale przeczytałem, że powinno się używać obłuskni wątków wprowadzonej w standardzie c++ 11. I teraz moje pytanie. Czy zastosować obsługę wątków z SFMLa czy zastosować się do zaleceń i skorzystać z tego w standardzie c++? A jeśli lepiej z tego ze standardu to czy polecicie jakiś dobry artykuł, w którym wyjaśnione będzie jak podzielić program na wątki itd. |
|
Gibas11 |
» 2016-12-16 01:16:49 Wątki z C++ są lepsze bo możesz ich użyć wszędzie. Jeśli coś jest w standardzie staraj się unikać zewnętrznych bibliotek. A tu masz ładny kurs. |
|
Warmix Temat założony przez niniejszego użytkownika |
» 2016-12-17 09:59:10 A jeszcze mam pytanie. Chciałbym w wątku tła tworzyć obiekt, tzn. uruchomić konstruktor klasy. Mógłbym prosić o jakiś przykład, w jaki sposób mogę to zrobić? |
|
Gibas11 |
» 2016-12-17 12:12:31 |
|
mokrowski |
» 2016-12-17 16:55:34 #include <iostream> #include <thread> #include <chrono> #include <string>
class Tuba { public: Tuba( const std::string & msg ); void dmuchaj( unsigned czas, unsigned ile ) const; private: const std::string dzwiek; };
Tuba::Tuba( const std::string & msg ) : dzwiek { msg } { }
void Tuba::dmuchaj( unsigned czas, unsigned ile ) const { for( auto i = 0; i < ile; ++i ) { std::cout << dzwiek << " " << std::flush; std::this_thread::sleep_for( std::chrono::milliseconds( czas ) ); } }
int main() { using namespace std; Tuba tuba1( "Pom..." ); Tuba tuba2( "Pff..." ); unsigned czas1 = 800; unsigned czas2 = 300; auto thr1 = thread( & Tuba::dmuchaj, & tuba1, czas1, 10 ); auto thr2 = thread( & Tuba::dmuchaj, & tuba2, czas2, 17 ); thr1.join(); thr2.join(); cout << "\nTada!!!!" << endl; }
|
|
« 1 » |