Hej, mam pytanie o problem producenta i konsumenta w wielowątkowości, znalazłem taki przykład
https://pastebin.com/9apeiazL

Thread Sanitizer wyrzuca mi tutaj: WARNING: ThreadSanitizer: double lock of a mutex

Ktoś wie jak można to naprawić aby nie wyrzucało tego warninga? Teoretycznie unique_lock powinien chyba zwalniać ten mutex po wyjściu ze scope?
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@stiv95: pewnie zadziała, ale nie wygląda to na najszczęśliwsze rozwiązanie. Gdy konsument dobierze się do sekcji krytycznej, to zablokuje innych producentów i konsumentów, aż do całkowitego opróżnienia kolejki. Kiepsko.
  • Odpowiedz
@stiv95 Tak w ogóle to możesz wyrzucić tego checka na rozmiar kolejki z while'a. Powiedziałbym że to nawet nie najlepsze rozwiązanie, bo gdy konsumenci opróżnią kolejkę zanim producenci ją wypełnią, stracisz wątki konsumentów.
  • Odpowiedz
Zacząłem się uczyć Qt i mam pytanie do ludzi co lepiej to ogarniają. Jak chcę skomunikować ze sobą dwa widgety np checkbox i textedit by po zaznaczeniu checkboxa zaczął mi się zwiększać co sekundę czas w textedit to połączenia robicie designerem czy widgety piszecie z palca?

Próbowałem designerem ale nie wiem jak wywołać setter na widgecie textedit i by zmienić mu wartość na jaką chce.

#programowanie #cpp #
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Sudo_exit: Designera używam wyłącznie do układania widgetów w okienkach, całą logikę piszę z palca. Wygodniej jest napisać jak coś ma działać niż to wyklikiwać - nie wiem nawet czy jest to możliwe

W twoim przypadku musisz zrobić dwie rzeczy: połączyć sygnał QCheckbox::stateChanged() z funkcją, która uruchomi odpowiednio skonfigurowany timer oraz połączyć QTimer::timeout() z funkcją, która pobierze aktualną wartość textedita, doda 1 i zapisze wynik. Poszukaj w dokumentacji qt funkcji connect()
  • Odpowiedz
@Sudo_exit: Weź poczytaj jakąś książkę do Qt i C++, zanim zadajesz takie pytania, albo miej 150IQ, bo inaczej nie poradzisz sobie w programowanie.

ui_mainwindow.h nie ruszasz i nie kopiujesz z niego kodu XD

Trzeba naprawdę nie umieć w programowanie, by nie widzieć, że MainWindow ma dodany wskaźnik ui przez który jak wpiszesz ui-> to nawet QtCreator podpowiada, że posiada pola o nazwach
  • Odpowiedz
Człowiek wykonuje mnóstwo nikomu niepotrzebnej pracy, żeby ogarnąć IDE w którym jednym kliknięciem można z tego samego kodu skompilować i uruchomić aplikację GUI na Windows 3.11 i Windows 11 (na upartego i macOS) ( ͡° ͜ʖ ͡°) wxWidgets jest fajne i lekkie, nie to co Qt ( ͡~ ͜ʖ ͡°)
#programowanie #retrocomputing #retrogaming #cplusplus #starekomputery
bero33bb - Człowiek wykonuje mnóstwo nikomu niepotrzebnej pracy, żeby ogarnąć IDE w k...

źródło: comment_1664215678vgEMdUJldatuWGqvIjkYvy.jpg

Pobierz
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak już ogarnę wszystko do końca to opublikuję instalator, do którego trzeba tylko zgrać swoje dyskietki Win 3.11 i/lub Win 95 i autonomicznie instaluje systemy, pobiera IDE, kompilatory, wxWidgets, kompiluje frameworki i instaluje szablony do robienia aplikacji pod MS-DOS, Win 3.11, Win 95 oraz "współczesny" 64-bitowy Windows, instaluje sam Win 3.11 i Win 95 w dosboxie razem z pobraniem aktualizacji, robi integrację myszy i instaluje sieć w dosboxie, podpina dosboxa jako debugger
  • Odpowiedz
Pracuję od kilku miesięcy nad symulatorem lotów orbitalnych, który ma wbudowaną maszynę wirtualną z własnym językiem asemblera. VM steruje lotem rakiety (podobnie jak na przykład Apollo Guidance Computer sterował lotem statku Apollo).
Pisze się programy w języku VM, które wprowadzają statek kosmiczny na orbitę o określonych parametrach, itp.

Nie korzystam z żadnych gotowych silników: wszystko oprogramowuję od podstaw sam w C++ (i "nowoczesnym" OpenGL) - łącznie z obliczeniami fizyki, renderowaniem grafiki i translatorem języka
gacek_w - Pracuję od kilku miesięcy nad symulatorem lotów orbitalnych, który ma wbudo...

źródło: comment_1664037071i0zFq3HpMKtXC5r44Uq3iQ.jpg

Pobierz
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

CTO Microsoftu chce końca C i C++

**Według dyrektora technicznego Azure C i C++ należy raz na zawsze odłożyć do lamusa. Oczywiście sugeruje alternatywę*
*https://bulldogjob.pl/readme/cto-microsoftu-odradza-korzystanie-z-c-i-c-proponuje-cos-innego

#programowanie #technologia #cplusplus #jezykc #rustlang #naukaprogramowania
Bulldogjob - CTO Microsoftu chce końca C i C++

**Według dyrektora technicznego Azu...

źródło: comment_1663935736HcmRqniWEG0qmWbiCqLC94.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

A ty w ile czasu byś ropykał to zadanie na rozmowie? W komentarzu podziel się rozwiązaniem w swoim języku programowania i ile ci to zajęło.


@BeginEnd: fajna zarzutka. Za darmo dostać rozwiązania ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@BeginEnd: Proszę:

perl -MFile::Slurp -le'$dir="."; $,="\n"; print sort { read_file($a) cmp read_file($b) } glob("$dir/*.txt");'
Jeżeli ma być bez używania zewnętrznych bibliotek, to:

perl -le'$dir="."; sub r { open($h,"<",shift); return <$h>; } $,="\n"; print sort { r($a) cmp r($b) } glob("$dir/*.txt");'
Wiem, że brzydko, bez kontroli błędów, nie akceptuje parametru (bo to jednolinijkowiec) itd. Ale działa ¯\_(ツ)_/¯
  • Odpowiedz
@anotmajarny: przedostatnia linia kodu.

@RRybak: chyba nie rozumiesz. Człowiek blokuje choćby na wykopie wszystkie tagi prawackie, lewackie, blm, polityka, katolickie itp żeby mieć od tego święty spokój po czym bierze książkę, techniczną i w przykładzie "Black Lives Matter". Co autor miał na myśli? Po co wciskać tutaj jakiś kontekst polityczny, społeczny, rasistowski itp? Wiele książkę przeczytałem technicznych ale spotykam się z czymś takim pierwszy raz
  • Odpowiedz
@Saly: "you cannot bind lvalue to an rvalue reference" czy jakoś tak. A gdy wywołujemy z intem funkcję, która przyjmuje double to podczas konwersji powstaje rvalue double'a, czyli włącza się funkcja double&&.
  • Odpowiedz
chcę zaimplementować prosty szyfr podstawieniowy do szyfrowania tekstu i kusi mnie żeby zrobić to przy pomocy biblioteki stl - wyglądało by to tak, że przy szyfrowaniu kluczami do wartości elementów mapa byłyby litery oryginalnego alfabetu a każdemu kluczowi by odpowiadała litera nowego alfabetu, który podawałby użytkownik, i odwrotnie przy deszyfrowaniu. powie ktoś czy taka koncepcja byłaby w miarę poprawna i łatwa do implementacji?
#cplusplus #cpp #programowanie
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@yungdupa: Jako ćwiczenie to pewnie będzie działało. Ale jak chcesz tego gdzieś użyć w prawdziwym zastosowaniu to mapy stl'owe do szukania w nich znaków raczej się nie nadają. Jak zrobisz z mapami to możesz pokusić się o użycie vectorów. To już ma więcej sensu.
  • Odpowiedz
jeśli mam vectora złożonego z obiektów, jak mogę znaleźć ilość obiektów w tym vectorze które posiadają daną wartość jednego z jego atrybutów?

przykładowo, mam coś takiego:

struct Obiekty
{
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

ja mam pytanie zasadnicze, dlaczego te wszystkie Janusze na forach typu 4programmers tak bardzo k----a na te kursy Zelenta z c++? tam rzeczywiście sa jakieś poważne błędy (jak tak to jakie) czy to po prostu jest p---------e starych dziadów bo ktoś potrafi wytłumaczyć trudne dla studentów zagadnienia lepiej niż oni na swoich zatechlych wykładach?
#programowanie #programista15k #polibuda #cpp #cplusplus
  • 39
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@yungdupa: bo uczy takiego c++, jaki się pisało ~20 lat temu. Dla początkującego nie ma to za bardzo znaczenia, ale warto mieć na uwadze, że obecnie się tak nie pisze, bo język "troszkę" wyewoluował
  • Odpowiedz
@yungdupa: nie znam typa, ale spojrzałem na https://miroslawzelent.pl/kurs-c++/sortowanie-zlozonosc-algorytmow/ i jest źle. Pominę polskie nazwy zmiennych, bo to może być fajne jak ktoś się uczy. Ale typ alokuje ręcznie tablice zamiast użyć std::vector. Używa też przestarzałych rzeczy jak clock, time czy rand zamiast std::chrono i tego co jest w . No i używa zmiennych globalnych - do tego zupełnie bez sensu, bo używa ich tylko w main().

Typ może i coś
  • Odpowiedz