Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
7. Dez
Son

Na das war jetzt eine schwerere Geburt.

In C# ist es mit der Threadsynchronisierung ja nun wirklich nicht umständlich: Einmal:

  1. private static readonly object lockObject = new object();

und dann nur noch:

  1. lock( lockObject ) {
  2.      //… Logik hier …
  3. }

Der Lock wird automatisch aufgehoben, wenn der Scope verlassen wird.

Nun stand ich vor dem Problem, in C++ eine Singletonklasse erstellen zu wollen. Die Instanz selbst wollte ich per boost::shared_ptr speichern und von dort an durch meine GetInstance()-Funktion lediglich boost::weak_ptr an die tatsächlichen Nutzer verteilen.
Da shared_ptr allerdings nicht genullt werden können, kam eine weitere Variable hinzu, die angibt, ob die Singletoninstanz bereits erstellt wurde oder nicht.
Um nun (jedenfalls rudimentäre) Threadsicherheit zu gewährleisten, muss jedoch sichergestellt werden, dass das Testen von ‚isInitialized‘ und das tatsächliche Initialisieren atomisch passiert – ein Lock muss her. Der dafür benötigte Semaphor, bereitgestellt über einen boost::mutex, muss dann dafür allerdings ebenfalls statisch sein.

Nun nahm ich an, das Problem ließe sich Weiterlesen »

6. Dez
Sam

Herrlich gelacht! How to shoot yourself in the foot, speziell: Wie man sich mit UNIX in den Fuß schießt:

  1. % ls
  2. foot.c foot.h foot.o toe.c toe.o
  3. % rm * .o
  4. rm: .o: No such file or directory
  5. % ls
  6. %

Oh ja, ich kenne es nur zu gut!

4. Dez
Don

pro’ gram mer (n.) An organism that converts caffeine into code.

2. Dez
Die

Man kann das letzte ?> in PHP-Dateien auslassen, ohne sich schlecht zu fühlen. Hier eine Zusammenfassung des Nutzens:

If you add up the time you save by not typing those two characters in each file of every project you work on from now until you are dead, you’ll find that you’ll literally save valuable minutes of your life.

— via Yongfook

Konnt ich jetzt drüber schmunzeln.

28. Nov
Fre

  1. catch( exception& ) {
  2.     cerr << "That's weird!\n" <<
  3.             "It works on my machine.\n";
  4. }

Heh heh.