-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
e.net!feeder.erje.net!feeds.phibee-telecom.net!news.mixmin.net!eternal-septembe
r.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: heby <h...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Rynek pracy STM32
Date: Tue, 19 Jul 2022 22:37:26 +0200
Organization: A noiseless patient Spider
Lines: 64
Message-ID: <tb74m7$16k1b$1@dont-email.me>
References: <b...@h...invalid>
<tb43lu$1ls$1$PiotrGalka@news.chmurka.net> <tb44nf$fm11$1@dont-email.me>
<tb4abv$5ml$1$PiotrGalka@news.chmurka.net> <tb4e3k$i1rd$1@dont-email.me>
<tb4epm$88p$1$PiotrGalka@news.chmurka.net> <tb4ffr$icc3$1@dont-email.me>
<tb4hhs$9qd$1$PiotrGalka@news.chmurka.net> <tb4iek$j5sm$1@dont-email.me>
<tb4irf$ahm$1$PiotrGalka@news.chmurka.net> <tb4jc1$jcbf$2@dont-email.me>
<tb63t5$ajv$1$PiotrGalka@news.chmurka.net> <tb650r$12ec9$1@dont-email.me>
<tb69h8$edq$1$PiotrGalka@news.chmurka.net> <tb6a9r$13mqc$1@dont-email.me>
<tb6cd5$g3f$1$PiotrGalka@news.chmurka.net> <tb6d2u$143ic$1@dont-email.me>
<tb6llt$lti$1$PiotrGalka@news.chmurka.net> <tb6mpq$1564q$1@dont-email.me>
<tb6o7a$ngq$1$Janusz@news.chmurka.net> <tb6ofk$15ag0$3@dont-email.me>
<tb6u08$r17$3$Janusz@news.chmurka.net> <tb6uuu$161mj$1@dont-email.me>
<tb705t$sbc$2$Janusz@news.chmurka.net> <tb72qn$16ds0$2@dont-email.me>
<62d710e1$0$562$65785112@news.neostrada.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 19 Jul 2022 20:37:27 -0000 (UTC)
Injection-Info: reader01.eternal-september.org;
posting-host="cb0f2a898241a13f7214c9fa7e9a291c";
logging-data="1265707";
mail-complaints-to="a...@e...org";
posting-account="U2FsdGVkX18KgoDlgRLcqlWnSwbJDHH6"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.11.0
Cancel-Lock: sha1:IC0hgtbDfOHuzRlmAHyc7HEfu4o=
Content-Language: en-US
In-Reply-To: <62d710e1$0$562$65785112@news.neostrada.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:773293
[ ukryj nagłówki ]On 19/07/2022 22:15, Grzegorz Niemirowski wrote:
>> Jesli kompilator wyoptymzliował Ci tą zmienną, a nie powinien, to masz
>> buga w kodzie, który załatałeś nieprawidłowym volatile.
> Co to znaczy, że nie powinien?
Janusz Twierdzi, że kompilator zredukował mu kod do zera, który robił
coś z jakąs zmienną.
Odrzucając hipoteze o bugu w kompilatorze:
Jedynym powodem, że jakiś kod korzystajacy ze zmiennej został
wyoptymalizowana do zera, to że kompilator w kodzie nie zakładał zmian
tej zmiennej w zewnątrznych funkcjach, lub mógł je wyliczyć statycznie
widąc cały kod.
Skoro tak, to miał prawo zoptymalizować ten kod do zera.
Janusz narzeka że tak sie stało.
Wnioskuje więc że:
1) to nie była zmienna a register - tutaj nalezy użyć volatile
2) to była zmienna modyfikowana w innym wątku albo przerwaniu - wtedy
volatile można uzyć tylko, jesli procesor nie wspiera barier. Nawet
mikrokontrolerowe ARMy miewają bariery.
https://developer.arm.com/documentation/den0024/a/Th
e-A64-instruction-set/Memory-access-instructions/Mem
ory-barrier-and-fence-instructions
> Jakie to jest nieprawidłowe volatile?
Użyte w sytuacji, kiedy tak naprawdę chcesz barierę. Bariera mówi
kompilatorowo: uwaga, ta zmienna może zostać zmodyfikowana przez inny,
nieznany czynnik, w tym miejscu nie wolno jej przechować ani zakładać że
ma jakaś starą wartość po przejściu bariery.
> Janusz podał 3 poprawne przykłady użycia volatile.
Zaznaczenie "volatile" na zmiennej powoduje, że kompialator wyłączy
cacheowanie jej wartości, co uniemożliwi optymalizację kodu.
Tymczasem prawie na pewno w algorytmie jest bug, albo wcale nie chodziło
o wyłaczenie optymalizacji, tylko o poinformowanie kompilatora, że
zmienna może być zmodyfikowana poza tym kodem. Od tego są bariery.
Dla procesorów posiadajacychc cache, baeriery są *JEDYNYM* sposobem
zapewnienia synchronizacji stanu zmiennych między watkami. Na niektórych
złośliwych architekturach możliwe jest, że mimo volatile, zmiana
zmiennej w wątku A nigdy nie będzie widoczna w wątku B bez użycia
bariery. Na innych może się zdażyć, że zapis z jednego watku w
kolejności A a potem B, bedzie widziany w innym wątku jako zapis B a
potem A. Tutaj znowu, volatile nic nie pomoże - od tego są bariery.
Ponieważ Janusz nie przedstawił spornego kawałka kodu - nie wiadomo
dlaczego kompilator usunął mu ten kod. Wiec można sobie na sucho
pogdybać w jakich okolicznościach może i dlaczego volatile nie jest od
tego, do czego go źle używają prawie wszyscy.
https://en.wikipedia.org/wiki/Memory_barrier
[...] The keyword volatile does not guarantee a memory barrier to
enforce cache-consistency. Therefore, the use of volatile alone is not
sufficient to use a variable for inter-thread communication on all
systems and processors.[...]
PS. To nie aby ja podałem 3 przykłady, w tym dwa błedne ;) ?
Następne wpisy z tego wątku
- 19.07.22 22:47 Janusz
- 19.07.22 22:47 Janusz
- 19.07.22 22:48 Janusz
- 19.07.22 22:51 Janusz
- 19.07.22 22:56 heby
- 19.07.22 22:58 heby
- 19.07.22 22:59 heby
- 19.07.22 23:03 Grzegorz Niemirowski
- 20.07.22 04:27 a...@m...uni.wroc.pl
- 20.07.22 05:18 Rutkowski, Jacek
- 20.07.22 09:51 Janusz
- 20.07.22 09:55 Janusz
- 20.07.22 09:57 Janusz
- 20.07.22 10:08 Dawid Rutkowski
- 20.07.22 10:20 heby
Najnowsze wątki z tej grupy
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=