Article View: pl.comp.lang.c
Article #267850Re: Ciemna strona C++
From: Sektor van Skijlen
Date: Tue, 11 Dec 2007 19:33
Date: Tue, 11 Dec 2007 19:33
49 lines
4171 bytes
4171 bytes
Dnia Thu, 6 Dec 2007 13:00:35 -0800 (PST), Maciej Sobczak skrobie: > On 6 Gru, 17:10, Sektor van Skijlen > <ethou...@guess.if.gmail.com.is.valid.or.invalid> wrote: > > > Wiesz co to jest coś takiego, jak memory ordering? Wiesz co to jest memory > > > barrier (znane czasem jako memory fence)? Co to jest acquire semantics, co > > > to release semantics? > > > > Oczywiście, że wiem. W przypadku mojej aplikacji jednak nie ma to akurat > > żadnego znaczenia - każda dana volatile ma swoje niezależne znaczenie i fakt, > > że jedna została dosynchronizowana, a druga nie, nie ma żadnego znaczenia. > To jest w takim razie szczególna własność Twojej aplikacji a nie > ficzer modyfikatora volatile. Tak. > > > Ponieważ w GCC volatile nie ma memory barrier to jeden procesor może widzieć > > > zapisy w innej kolejności niż się faktycznie wydarzyły. > > > > Super. A co MA memory barrier? > W szczególności jawnie obsłużony mutex - i to jest poziom, na którym > normalne programy powinny operować. Ano i właśnie tu zaczyna się rzecz, którą niekoniecznie kumam: mam, załóżmy, jeden muteks. Zajmuję go, modyfikuję zmienną (lub czytam) i zwalniam. Skąd wiadomo, która część pamięci ma mieć zwolnioną barierę? Przecież muteks nie jest w żaden sposób powiązany z tym fragmentem pamięci, który modyfikuję. > W systemach Uniksowych z "normalną" pamięcią można też przyjąć, że > bariera jest wymuszana przez I/O lub IPC. Czyli jeśli jesteś w stanie > zapewnić *związek przyczynowo-skutkowy* pomiędzy akcjami dwóch wątków > przy użyciu I/O (np. wpisując coś do pipy w jednym wątku a czytając w > drugim), to ten związek przyczynowo-skutkowy odnosi się też do > modyfikacji i widoczności zmian *innych* danych dzielonych przez te > wątki. To nie jest jawnie gwarantowane przez POSIX, ale na normalnych > systemach można tak przyjąć (bo każda implementacja zapewni to "przy > okazji") i jest to czasem wygodne - np. można użyć pipę do > synchronizacji/sygnalizowania danych w pamięci dzielonej. To jest ok, tylko znów - czy takie zwalnianie bariery obowiązuje za każdym razem całą pamięć procesu? -- // _ ___ Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl> \\ L_ |/ `| /^\ ,() <ethouris(O)gmail.com> // \_ |\ \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx "Java is answer for a question that has never been stated"
Technical Details
Message-ID:
<fjmolo$a5r$4@kujawiak.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.man.lodz.pl!not-for-mailReferences:
<fghgeo$spf$1@nemesis.news.tpi.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh2lj6$qkh$1@news.vectranet.pl> <fha3as$pap$1@bozon2.softax.pl> <fhaj8u$e02$1@news.vectranet.pl> <fhf09d$ohq$1@bozon2.softax.pl> <fhfi9l$640$1@news.vectranet.pl> <fhurmu$5d9$1@bozon2.softax.pl> <fhv020$8k1$1@news.vectranet.pl> <fi1bs4$nn3$1@bozon2.softax.pl> <fi27ds$gt1$1@kujawiak.man.lodz.pl> <fi458p$fmv$1@bozon2.softax.pl> <fi9ckc$2u5$1@kujawiak.man.lodz.pl> <fimb7n$80v$1@bozon2.softax.pl> <fj5k6j$r3e$1@kujawiak.man.lodz.pl> <1196847281.22322.24.camel@qrnik> <fj6in8$mij$2@kujawiak.man.lodz.pl> <fj6m8p$b7e$1@bozon2.softax.pl> <fj96ug$7e4$3@kujawiak.man.lodz.pl> <4d1bbf43-5397-4e1d-85b1-a61dd07b5b01@d21g2000prf.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <ethouris@guess.if.gmail.com.is.valid.or.invalid>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Tue, 11 Dec 2007 19:33:12 +0000 (UTC)
Organization: LODMAN - Metropolitan Area Network in LODZ, Poland
Lines: 49
Sender: Michal Malecki <sektor@student.kis.p.lodz.pl>
Message-ID: <fjmolo$a5r$4@kujawiak.man.lodz.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh2lj6$qkh$1@news.vectranet.pl> <fha3as$pap$1@bozon2.softax.pl> <fhaj8u$e02$1@news.vectranet.pl> <fhf09d$ohq$1@bozon2.softax.pl> <fhfi9l$640$1@news.vectranet.pl> <fhurmu$5d9$1@bozon2.softax.pl> <fhv020$8k1$1@news.vectranet.pl> <fi1bs4$nn3$1@bozon2.softax.pl> <fi27ds$gt1$1@kujawiak.man.lodz.pl> <fi458p$fmv$1@bozon2.softax.pl> <fi9ckc$2u5$1@kujawiak.man.lodz.pl> <fimb7n$80v$1@bozon2.softax.pl> <fj5k6j$r3e$1@kujawiak.man.lodz.pl> <1196847281.22322.24.camel@qrnik> <fj6in8$mij$2@kujawiak.man.lodz.pl> <fj6m8p$b7e$1@bozon2.softax.pl> <fj96ug$7e4$3@kujawiak.man.lodz.pl> <4d1bbf43-5397-4e1d-85b1-a61dd07b5b01@d21g2000prf.googlegroups.com>
NNTP-Posting-Host: student.kis.p.lodz.pl
Mime-Version: 1.0
X-Trace: kujawiak.man.lodz.pl 1197401592 10427 212.191.89.21 (11 Dec 2007 19:33:12 GMT)
X-Complaints-To: abuse@man.lodz.pl
NNTP-Posting-Date: Tue, 11 Dec 2007 19:33:12 +0000 (UTC)
User-Agent: tin/1.8.3-20070201 ("Scotasay") (UNIX) (FreeBSD/6.2-RELEASE-p3 (sparc64))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit