Article View: pl.comp.lang.c
Article #267847Re: Ciemna strona C++
From: Sebastian Kaliszewski
Date: Wed, 05 Dec 2007 17:30
Date: Wed, 05 Dec 2007 17:30
63 lines
3435 bytes
3435 bytes
Sektor van Skijlen wrote:
>>>>Rozumiem, że chodzi o volatile z Dżawy, nie to cóś z C/C++.
>>>
>>>Ależ oczywiście, że chodzi o oba. Zresztą znaczenie 'volatile' w Javie i w C++
>>>jest identyczne (jeśli oczywiście uwzględnimy fakt, że gcc ma rozszerzenie w
>>>stosunku do standardu, co pozwala zmiennym oznaczonym volatile pracować
>>>poprawnie z posix threads).
>
>
>>Jakie rozszerzenie GCC? Nie słyszałem o nim. Na pewno nie jest tak
>>domyślnie (nawet przy kompilacji z -pthread).
>
>
> Ależ oczywiście, że jest tak domyślnie - obiekty oznaczone jako volatile są
> modyfikowane od razu w każdym wątku.
Sektor, czy ty wogóle wiesz o czym ty mówisz??? Mam wrażenie, że nie masz
bladego pojęcia.
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?
Wiesz, że jak masz dwa procesory to w wielu architekturach poniższy kod może
wypisać 0? Nawet w GCC.
volatile sig_atomic_t a = 0;
volatile sig_atomic_t b = 0;
void thread_a()
{
while(true)
{
if(a != 0) // tu czytamy a (najpierw)
{
int v = int(b); // tu czytamy b (potem)
std::cout << v; // niespodzianka :)
return;
}
}
}
void thread_b()
{
sleep(13);
b = 1; // tu zapisujemy b (najpierw)
a = 1; // tu zapisujemy a (potem)
}
int main()
{
launch_thread(&thread_b);
launch_thread(&thread_a);
}
Ponieważ w GCC volatile nie ma memory barrier to jeden procesor może widzieć
zapisy w innej kolejności niż się faktycznie wydarzyły.
pzdr
\SK
Technical Details
Message-ID:
<fj6m8p$b7e$1@bozon2.softax.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mailReferences:
<fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.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>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail From: Sebastian Kaliszewski <s@get.it.off.to.reply.informa.pl> Newsgroups: pl.comp.lang.c Subject: Re: Ciemna strona C++ Date: Wed, 05 Dec 2007 18:30:27 +0100 Organization: Softax news server Lines: 63 Message-ID: <fj6m8p$b7e$1@bozon2.softax.pl> References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.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> NNTP-Posting-Host: 83.18.189.42 Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1196875506 10686 83.18.189.42 (5 Dec 2007 17:25:06 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Wed, 5 Dec 2007 17:25:06 +0000 (UTC) User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322) X-Accept-Language: en-us, en In-Reply-To: <fj6in8$mij$2@kujawiak.man.lodz.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit