@aczutuse: Problemem Akki jest to że aktorzy mają bardzo konkretny use-case, który można ze spokojem zaadresować innymi abstrakcjami ¯_(ツ)_/¯ Podobnie rzecz ma się z Akka HTTP czy Akka Streams. Co innego Akka Cluster, gdzie tutaj faktycznie jest to jedno z lepszych rozwiązań na rynku, ale tutaj z kolei bardzo ciężko o uzasadnione użycie tego w projekcie, ponieważ większość z nich zupełnie nie potrzebuje aż takiego complexity. A nawet jeżeli potrzebuje, to
Chce przerobić skrypt na klasy. Obecnie mam globalnego Lock() i dwie metody w których jest on wykorzystywany.
Klasa A używa Lock() do zebrania danych, a Klasa B do analizy tych danych (kopiowanie do lokalnych zmiennych).
Jak nie niszcząc zasad obiektowości przekazać Lock() do obu klas?
Chyba, że mogę w obu klasach stworzyć zmienną self.lock = threading.Lock() i będzie to działać jak do tej pory? (w co wątpię)
#python #programowanie #wielowatkowosc
Hej,

http://codingways.blogspot.de/2012/08/implementing-thread-safe-queue-in-c11.html

Mam dwa pytania.
1. Po co używać tutaj std::shared_ptr Jeśli będę chciał użyć shared_ptr to sobie dam za T więc gość chciał za dobrze? Dobrze myślę?
2. Po co strażnik (std::lock_guard lock(mMut); ) w Empty? I tak po zwróceniu true/false nie wiemy czy kolejka jest pusta lub pełna. Bo locka już nie ma. I w kolejnej operacji wcale nie musi być już pusta.

#cpp11 #cpp #programowanie #wielowatkowosc
@xaoc 1 imo przedobrzył. Wystarczyło zrobić kopię obiektu i ją zwrócić. Niczego tym nie zyskał (dalej wymaga copy constuctable). Zresztą - dlaczego miałoby tu być race cond? Można 2x zpopować element?
Mirki mam pytanie co do wątków w #java
Mam dość czasochłonne zadanie, które musi być stale przeliczane i powiedzmy, że w jednej iteracji musi ono być wykonane 1000 razy. Na jedną iterację schodzi na pojedynczym wątku około 6-10 minut. Chcę każde to obliczenie wykonać na nowym wątku żeby trochę szybciej to zeszło. Doczytałem na SO o ExecutorService.
Ktoś nawet podrzucił kod:

ExecutorService es = Executors.newCachedThreadPool();
for(int i=0;i<5;i++)
es.execute(new Runnable() { /* your
Kurde, poszukuje pewnych materiałów z javy. Na 90% była to książka (pdf) i na 80% była ona po polsku. Miała ona bardzo fajne wprowadzenie do wątków w javie - opisano klasyczne problemy współbieżności (chyba z przykładowymi kodami?) tzn. producent-konsument, pisarz-czytelnicy i problem z filozofami. Następnie podkreślono, że wiele problemów związanych z wątkami często sprowadza się do tych zagadnień.

Czy ktoś wie o jaką książkę może chodzić?


#java #programowanie #wielowatkowosc #pytaniedoeksperta #pytajo
Mireczki, co może powodować błędy po rozbiciu pętli na wątki?

Mam na myśli taką sytuację w uproszczonym modelu.

Mam pętlę która wykonuje operacje na tablicy 3D metodą iteracyjną rozbitą na 3 zagnieżdżone pętle for:

for(int x = 0; y
{

for(int y= 0; y
for(z = 0; z
// Do stuff

}

Zamieniam ją na wiele wątków ten sposób:

std::vector loadingThreads;

for(int y = 0; y
{

loadingThreads.push_back(std::thread(&KlasaBazowa::NowaFunkcja, this, paramA , y));
@Shilghter: pokaż więcej kodu.

I taki offtopic: polecam

emplace_back
zamist

push_back
, który przekaże argumenty od razu do konstruktora, dużo czytelniejsze, a w dodatku nie ma zbędnego move constructora, który by się przy

emplace_back
wykonał.

I należy też pamiętać, że

std::thread
nie jest kopiowalny i że jego konstruktor bierze argumenty przez kopię, a referencje musisz przkezywać przez reference wrappera (

std::ref
).
@Shilghter:

To jest stała, w tej wersji zawsze wynosi 16


więc costam % 16 <= 15, na pewno się nie powtarza?

A jest możliwe, że wątki się gubią jeśli te operacje są wykonywane dla wielu róznych chunków jednocześnie?


wut?

Jest możliwe, że tworzy się za dużo wątków i stąd błędy?


Watków nie powinno być za dużo, masz coś takiego jak

std::thread::hardware_concurency
, który oznacza liczbę wątków możliwych do realizacji równocześnie, ale
@Ziom_Bel: inny sposób, pseudo-javakod dla głównego wątku. W którymś z wątków liczących musisz wywołać notify na zakończenie przetwarzania...

//globalnie

Object object = new Object();

synchronized (object){

//start wątkow

object.wait();

//zakonczenie przetwarzania

}
Zaraz mnie coś trafi. Całą noc siedzę nad semaforami i nie mogę tego zrobić.

Probem: Dwóch producentów, dwóch konsumetów, bufor fifo, liczby losowe. Konsumenci identyczni (jedna funkcja), jeden producent pisze kiedy chce (pod warunkiem, że bufor nie jest pełny), drugi może pisać tylko jeżeli suma liczb w buforze spełnia pewien warunek.

Rozwiązałem bez uwzględniania warunku z sumą.

Na pewno mam semafory:

mutex(1); // broni dostępu do bufora

production(BUFFER_CAPACITY); // bo produkować można
Pomimo iż ogólnie ja prawak, to właśnie sobie uświadomiłem, że niektóre pomysły #korwin'a to są o kant dupy potłuc. Tak jak tutaj: mamy króla programistę i państwo, w którym jedni lewacy chcą tylko żyć i żreć, a drugie #trybson'y interesuje tylko, żeby gdzieś coś wepchnąć if you know what I mean. I jedni i drudzy mają w dupie innych, starają się tylko zaspokoić własne potrzeby choćby mieli kogoś zagłodzić. Mi