Jak zrobić, żeby wątki odpadały się kolejno?

0

Hmmm chodzi mnie o to, że majac 3 watki, chciałbym, aby w każdym takcie odpalały się mniej wiecej tak

takt 1
watek 1
watek 3
watek 2

takt 2
watek 3
watek 1
watek 2

ulozenie w taktach nie ma znaczenia, chodzi o to, że jak uruchomię przez run() to sie wykonaja po kolei - najpierw wszystko z 1, pozniej z 2 i na koniec 3, natomiast start dopala watki i czasem jest tak, ze pierw bedzie 1,1,1,1 pozniej 2,1,1,1 pozniej 3,3,3,1 itd... mysle ze da rade zrozumieć o co chodzi :)

0

Ja nie rozumiem o co chodzi.
Jesli chcesz uruchamiac jakies zadania po kolei, to po co watki? One sa po to aby cos uruchamiac w tym samym czasie, rownolegle (lub pozornie rownolegle).

0

ehhh :|

potrzebuje robić jedną rzecz w kilku watkach jednoczesnie, ale to ogolnie działa tak, że watek 1 wykona sie 10 razy, a watek 2 jeszcze nie zacznie, a ja potrzebuje, zeby rozpoczely sie wszystkie (nie koniecznie po kolei)...

moze byc przykladowo tak 1,2,3 - 3,1,2 - 2,1,3 - 3,1,2 - 3,1,2 ... chodzi o fakt tego, że w kazdym z nich cos tam sie robi... i chce zeby sie to mniej wiecej równomiernie w czasie rozkładało :)

0
isso napisał(a)

ehhh :|

potrzebuje robić jedną rzecz w kilku watkach jednoczesnie, ale to ogolnie działa tak, że watek 1 wykona sie 10 razy, a watek 2 jeszcze nie zacznie, a ja potrzebuje, zeby rozpoczely sie wszystkie (nie koniecznie po kolei)...

moze byc przykladowo tak 1,2,3 - 3,1,2 - 2,1,3 - 3,1,2 - 3,1,2 ... chodzi o fakt tego, że w kazdym z nich cos tam sie robi... i chce zeby sie to mniej wiecej równomiernie w czasie rozkładało :)

proponuje mutex'a i zmienna int czyja_kolej

watek probuje ustawic sobie mutexa jezeli czyja_kolej%3==nr_watku (numerowanie od 0)
po wykonanej operacji zwieksza czyja_kolej++; i zwalnia mutex.

Bedziesz mial w tedy zawsze 0,1,2,0,1,2,0,1,2,0,1,2 - tyle po co?
nie lepiej jeden watek i 3 funkcje -> jedna robi to co watek0 , druga to co watek1 a trzecia to co watek2
i ten jeden watek wykonywal by te 3 funkcje kolejno - efekt ten sam.

--- dodatkowo mozesz miec tez 3 zmienne int - kazdy watek co iteracje zwiekszal by swojego inta,
i nie wykonujesz operacji jezeli int_aktualnego>srednia_int_pozostalych+tolerancja

1 użytkowników online, w tym zalogowanych: 0, gości: 1