 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Hendrik Wendler Guest
|
Posted: Mon May 15, 2006 4:46 am Post subject: multicore / multithread safe smart pointers |
|
|
Hi,
ich hab in meinem programm einige
im netz zu findende smart pointer
implementierungen ausprobiert.
Eigentlich war keine bisher ausdrücklich
thread safe. sobald mehr als eine cpu
am werk ist - also wenn es ernst wird =)
dann wackeln die referenzzähler.
jetzt wüsste ich noch die boost lib,
aber das wäre ein verhältnis 80:1
lib und applikation.
ist denn jemand ein (getesteter!)
1 - header - multithread - safe
smart pointer bekannt?
besten gruss + vielen dank,
hendrik
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Andreas Huennebeck Guest
|
Posted: Mon May 15, 2006 1:47 pm Post subject: Re: multicore / multithread safe smart pointers |
|
|
Hendrik Wendler wrote:
| Quote: | ich hab in meinem programm einige
im netz zu findende smart pointer
implementierungen ausprobiert.
Eigentlich war keine bisher ausdrücklich
thread safe. sobald mehr als eine cpu
am werk ist - also wenn es ernst wird =)
dann wackeln die referenzzähler.
jetzt wüsste ich noch die boost lib,
aber das wäre ein verhältnis 80:1
lib und applikation.
ist denn jemand ein (getesteter!)
1 - header - multithread - safe
smart pointer bekannt?
|
AFAIR beschreibt Andrei Alexandrescu in seinem Buch
"Modern C++ Design" eine solche Klasse. Sie gehört
wohl zur LOKI Bibliothek: http://sourceforge.net/projects/loki-lib/
Tschau
Andreas
--
Andreas Hünnebeck | email: acmh (AT) gmx (DOT) de
----- privat ---- | www : http://www.huennebeck-online.de
Fax/Anrufbeantworter: 0721/151-284301
GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc
PGP-Key: http://www.huennebeck-online.de/public_keys/pgp_andreas.asc
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Hendrik Wendler Guest
|
Posted: Wed May 17, 2006 4:31 pm Post subject: Re: multicore / multithread safe smart pointers |
|
|
tausend dank, ich habs mir gleich
angesehen. die innereien der smartpointer.h
sind beeindruckend ... wirklich ...
aber leider ist das auch eine ganze lib,
mit vielen inneren dependencies.
für die referenzzähler gibts unter
win32 interlockedincrement(), aber das
ist ja eine api-funktion.
ich habe dann etwas geforscht, wie diese
funktion implementiert ist, und mich
etwas gegruselt. unter win95 wird das
gesamte OS angehalten und dann die
OP in geschütztem speicher ausgeführt.
(ich hab jetzt nicht den assembler gelesen -
irgnedwo bei "the old new thing", einem ms
blog gibts dazu eine diskussion)
naja, wenns nicht anders geht?
wie hiesse denn sowas unter osx bzw.
linux?
besten gruss,
hendrik
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Andreas Huennebeck Guest
|
Posted: Thu May 18, 2006 12:23 pm Post subject: Re: multicore / multithread safe smart pointers |
|
|
Hendrik Wendler wrote:
| Quote: |
AFAIR beschreibt Andrei Alexandrescu in seinem Buch
"Modern C++ Design" eine solche Klasse. Sie gehört
wohl zur LOKI Bibliothek: http://sourceforge.net/projects/loki-lib/
tausend dank, ich habs mir gleich
angesehen. die innereien der smartpointer.h
sind beeindruckend ... wirklich ...
|
Das Buch auch - sehr lesenswert.
| Quote: | aber leider ist das auch eine ganze lib,
mit vielen inneren dependencies.
|
Vielleicht kannst Du ja einfach die Sachen, die Dich interessieren,
herausklauben.
| Quote: | für die referenzzähler gibts unter
win32 interlockedincrement(), aber das
ist ja eine api-funktion. [..]
wie hiesse denn sowas unter osx bzw.
linux?
|
Unter Unix im allgemeinen verwendet man dafür Semaphoren,
das sind sozusagen atomare Zähler: man semget, semctl, semop
In der Omnithread Library gibts auch solche Semaphoren, die
sind plattformunabhängig:
http://omniorb.sourceforge.net/omni40/omnithread.html
Bei den Boost-Libraries findet sich bestimmt auch was:
http://www.boost.org
Tschau
Andreas
--
Andreas Hünnebeck | email: acmh (AT) gmx (DOT) de
----- privat ---- | www : http://www.huennebeck-online.de
Fax/Anrufbeantworter: 0721/151-284301
GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc
PGP-Key: http://www.huennebeck-online.de/public_keys/pgp_andreas.asc
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Hubert Schmid Guest
|
Posted: Sat May 20, 2006 12:18 pm Post subject: Re: multicore / multithread safe smart pointers |
|
|
Hendrik Wendler <hendrik--nospam--@mxwendler.de> writes:
| Quote: | ist denn jemand ein (getesteter!) 1 - header - multithread - safe
smart pointer bekannt?
|
Hast du schon mal geschaut, ob bei deinem Übersetzer
std::tr1::shared_ptr mitgeliefert wird?
Beim aktuellen GCC ist er beispielsweise dabei. Dort ist auch der
größte Teil tatsächlich in einem Header (tr1/boost_shared_ptr.h). Wenn
ich das richtig sehe, dann werden nur ein paar zusätzliche Funktionen
für die Synchronisation verwendet.
Gruß, Hubert
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|