Dual Core
-
rüdiger schrieb:
hustbaer schrieb:
rüdiger schrieb:
Persönlich glaube ich, dass das Problem ist, was man sich zur Zeit unter Threads vorstellt: Shared-State-Threads wie sie die meisten Betriebssysteme zur Verfügung stellen, sind äußerst schwer zu programmieren und es richtig hinzubekommen ist fast ein Ding der Unmöglichkeit.
Nur wenn man versucht schlau zu sein. Wenn man sich dagegen an bestimmte Richtlinien hält ist es eigentlich relativ einfach. Die PTHREADS Richtlinien bzw. das offizielle PTHREADS Speichermodell ist zwar übertrieben restriktiv, dafür kann aber auch garnix passieren wenn man sich daran hält.
ist folgender Code Threadsafe und hält er sich an deine Richtlinien?
SharedObject *getSharedObject() { static SharedObject *sharedObject; if(!sharedObject) { LOCK; if(!sharedObject) { sharedObject = new sharedObject; } UNLOCK; } return sharedObject; }2x nein.
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1254099.html#1254099
Ok, ich widerspreche mir hier z.T. selbst, auf der einen Seite sag' ich Multithreading ist die Hölle, auf der anderen sag' ich es ist nicht so schwer. Das liegt einfach daran dass mein Hirn mir sage "es ist nicht so schwer", die Erfahrung sagt mir allerdings "es ist die Hölle", weil ich immer wieder so viele Leute so viele Dinge diesbezüglich falsch machen sehe.
-
machs halt so
static SharedObject *sharedObject; SharedObject synchronized getSharedObject() { if(!sharedObject) { sharedObject = new sharedObject; } return sharedObject; }
-
oben noch das * weg
-
hustbaer schrieb:
Ok, ich widerspreche mir hier z.T. selbst, auf der einen Seite sag' ich Multithreading ist die Hölle, auf der anderen sag' ich es ist nicht so schwer. Das liegt einfach daran dass mein Hirn mir sage "es ist nicht so schwer", die Erfahrung sagt mir allerdings "es ist die Hölle", weil ich immer wieder so viele Leute so viele Dinge diesbezüglich falsch machen sehe.
Wie gesagt, das was es schwer macht ist zum größten Teil das "Shared State"-Prinzip. Schau dir zB mal Erlang an.
-
mit *