wytrzzeszcz
#programowanie ma ktoś jakieś fajne how-to jak się używa PThread?
taki z tymi rw mutexami sygnałami itd?
mam dokumentacje ale czuje że dziś nie dam rady jej strawić a chce mieć zrobione.

#naukaprogramowania #posix
  • Najlepsze
  • Wszystkie komentarze
knifeman
knifeman
r00ti
r00ti
2
#linux #posix #programowanie #embedded #c #programista15k

Mirasy mam pytanko.

Mam 2 wątki i korzystam z POSIX i języka C.

Jeden
  • Najlepsze
  • Wszystkie komentarze
zetisdead
@r00ti: słowo-klucz do google: zmienne warunkowe

https://pl.wikibooks.org/wiki/POSIX_Threads/Synchronizacja_mi%C4%99dzy_w%C4%85tkami/Zmienne_warunkowe

Potrzebujesz czekania na zmianę zmiennej z timeoutem: pthread_cond_timedwait
xaoc
xaoc
xaoc
2
Hej,
Co zastosowalibyście w celu rozwiązania problemu, że klasa Writer potrzebuje wysłać dane do X wątków. (Nie rozdziela tych danych) tylko wysyła do każdego wszystko co ma. W sumie wystarczyła by jakaś globalny vector tylko skąd wiedzieć, że wszystkie wątki już sobie dane pobrały ( i można je unicestwić). (najlepiej, żeby nie trzeba było blokować odczytu -- w sensie, nowy element będzie można odczytać kiedy będzie kompletny w pamięci i wszystkie wątki
  • Najlepsze
  • Wszystkie komentarze
lionbest
@xaoc: Większość wzorców komunikacyjnych (tutaj tzw broadcasting, one-to-many) da się zaimplementować za pomocą (std::conditional_varible](http://en.cppreference.com/w/cpp/thread/condition_variable_any).

Tylku tutaj możesz sobie pozwolić by wielu odczytywało jednocześnie, więc korzystasz z jednego globalne go std::shared_mutex które wymaga użycia jednego globalnego std::conditional_varible_any oraz jakiejś dowolnej twojej zmiennej którą można odczytywać w wielu wątkach na raz. (Odczytywane lub kopiowanie jest w pełni thread save, nie tylko reetrant. Przykładowo wektor i lista tak, ale mapa
xaoc
xaoc
xaoc Autor
0
Przepraszam, że tak późno odpisuję.
Z dokumentacji wynika, że sharedmutex są od c++17. Ja muszę korzystać z C++11.

Co do przykładu, jutro albo wieczorem go przetestuję wygląda, bardzo jasno.

Tylko ja bardziej się zastanawiam, gdzie trzymać to moje dane. Chodzi o to, że daną powinienem zapomnieć kiedy już wszystkie wątki sobie ją pobrały i je wysłały. Ja sobie napisałem buffor cykliczny (na moim kompie działa ale wydaje mi się, że na obciążonej maszynie może
mk321
#linux #posix #ieee #programowanie

Wyrażenia regularne (BRE i ERE) zostały zdefiniowane w POSIX. On został zdefiniowany w standardzie POSIX.1-2008 (czyli IEEE Std 1003.1-2008).

Specyfikacja standardu jest do kupienia tutaj:
  • Najlepsze
  • Wszystkie komentarze
mk321
mk321 Autor
0
W ogóle tu piszą jak dostać tego PDF-a za free: https://github.com/geoff-codes/posix-standard

Nie ogarniam tego IEEE. Są strasznie niegospodarni ( ͡° ͜ʖ ͡°) Albo by kazali kupować wszystkim, albo nie robili zamieszania i dali wszystkim za free.
kamil062
kamil062
Wiesz, ubuntu też można kupić na płytce, pomimo że jest darmowy :P Wymyślą sobie że masz dokumenty w lepszej jakości czy coś i każą za to zapłacić. Na wszystkim można zrobić biznes ( ͡° ͜ʖ ͡°)
n.....e
n.....e
#programowanie #cpp #unix #posix #synchronizacja #semafor

Jak byście zrobili funkcje produce i consume do problemu producent-konsument, jeśli consume pobierałby jako argument wartość, którą ma pobrać z bufora. Jeśli w buforze nie byłoby tej wartości to by się zawieszał?
  • Najlepsze
  • Wszystkie komentarze
n.....e
n.....e
Po prostu uprościłem zadanie. Tak naprawdę to przechowuję w buforze krotki, a concume przyjmuje wzorzec krotki. Zwraca pierwszą pasującą do wzorca.
DanioPL
@nme: rzucić jakiś wyjątek i go obsłużyć? :D