Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja jako dodatkowy wątek

Ostatnio zmodyfikowano 2015-03-04 18:49
Autor Wiadomość
MonoMisiek
Temat założony przez niniejszego użytkownika
Funkcja jako dodatkowy wątek
» 2015-03-03 19:44:39
Przeczytałem to i to
http://cpp0x.pl/kursy​/Kurs-WinAPI-C++/Zaawansowane​/Watki/337
http://cpp0x.pl/artykuly/?id=8

Potrafię odpalić funkcję jako nowy wątek, tylko że u mnie w programie sprawa się nieco komplikuje, ponieważ do funkcji przekazuję argument...
Wygląda to tak:
funkcja(&liczba);

I teraz jak zrobić, żeby funkcja odpaliła się jako nowy wątek?
P-127609
Monika90
» 2015-03-03 20:24:40
Użyj klasy thread z biblioteki standardowej C++
P-127611
MonoMisiek
Temat założony przez niniejszego użytkownika
» 2015-03-03 21:14:16
Nie mam klasy thread w bibliotece standardowej.
Używam VS2010
P-127621
Monika90
» 2015-03-03 21:18:39
To w takim razie boost::thread z biblioteki Boost
P-127623
pekfos
» 2015-03-03 23:13:32
u mnie w programie sprawa się nieco komplikuje, ponieważ do funkcji przekazuję argument...
Wygląda to tak:
funkcja(&liczba);
W czym problem? Przecież możesz przekazać jeden argument do wątku przez _beginthread() i nawet jest to wskaźnik.
P-127646
MonoMisiek
Temat założony przez niniejszego użytkownika
» 2015-03-04 00:13:58
@pekfos Ale jak to zrobić? Jakbym nie robił, to zawsze sypie multum blędów...


@Monika90 zainstalowałem tego boosta i jak odpalić funkcję?
wpisuję
boost::thread funkcja(&liczba);
wywala masę błędów w thread.hpp...
P-127647
DejaVu
» 2015-03-04 01:13:10
P-127652
MonoMisiek
Temat założony przez niniejszego użytkownika
» 2015-03-04 17:55:32
No dobra zrobiłem boostem (vs10 nie ma c++11..., w tych pozostałych funkcje są void...)

Takie mam pytanie techniczne, bo nie wiem czy takie rzeczy w ten sposób się robi. (Aha, zależy mi na szybkości programu i na małym obciążeniu procesora)

W wielkim uproszczeniu: program generuje tablicę, szuka wektor między elementem A i B.
(generowanie tablicy, jest to czynność najszybsza)

Bez wątków, robiłem po kolei: (generowałem tablice, szukam A, szukam B, kasuje tablicę) i tak w kółko = +-220ms / 3% procesora

Na wątkach zrobiłem ich 3:
1- while(true){
generuje tablice,
odpala wątek szukam A,
odpala wątek szukam B,
join A, join B,
kasowanie tablicy}


2- szuka A
3- szuka B

W mainie wołam 1 raz wątek 1
Zajmuje to 27% procesora / 130ms

Dobrze to robię? Czy takie rzeczy się robi w inny sposób.
I co można jeszcze zrobić, żeby przyśpieszyć?

PS. sprawdziłem oddzielnie co ile trwa:
generowanie tablicy 50ms
kasowanie tablicy 600us
szukaj A 82ms
szukaj B 60ms





P-127719
« 1 » 2
  Strona 1 z 2 Następna strona