Seite 3 von 4

Verfasst: 14.07.2009 18:50
von X360 Andy
>>Und was hat das mit einem CallBack zu tun?

Hm hab Thread wohl da mit einem Callback verwechselt :oops:

Es muss nicht alles einen Sinn haben :mrgreen:

Hab das grad mal auf einem alten Rechner versucht, da braucht der Code ca. 1-2 Sekunden bis er eine übereinstimmung findet. ( 100.000.000 durchläufe )

Code: Alles auswählen

Procedure Setter(b)
  Shared x,a
  Repeat
    If x = 1
      x = 2
    Else
      x = 1
    EndIf
    a + 1
  ForEver
EndProcedure
start = ElapsedMilliseconds()
CreateThread(@Setter(), b)

Repeat
  If x = 1 And x = 2
    MessageRequester("!!!", Str(ElapsedMilliseconds()-start)+"ms "+Str(a)+" durchläufe")
    a = 0 
    start = ElapsedMilliseconds()
  EndIf
ForEver
Auf meinem Lappy ca. 16ms (ca. 2.000.000 durchläufe)

Wenn ich das ersetze "If x = 1 And x = 2 And x = 1" dann braucht er gleich viel länger :D

Verfasst: 14.07.2009 19:21
von KeauHou
Auf meinem 2,8ghz Quad braucht es 0 ms mit meistens so umd die 100-200 Durchläufe :D

Verfasst: 14.07.2009 19:38
von X0r
Modulo hin oder her, Kaeru Gaman's code ist schneller, wenn auch minimal, und damit besser.
Ende der Diskussion. :mrgreen:

Verfasst: 14.07.2009 21:48
von #NULL
das hier bringt bei mir noch häufigere Wotsefucks:

Code: Alles auswählen

Procedure Setter(*x.Integer)
  Repeat
    *x\i!1
  ForEver
EndProcedure

CreateThread(@Setter(), @x)

Repeat
  If x XOr x
    ;MessageRequester("!!!", "WTF")
    Beep_(500,10)
  EndIf
ForEver

aber is ja auch schnuppe :mrgreen:

Verfasst: 15.07.2009 19:57
von NicTheQuick
Mit solchem Zeug hab ich mich dieses Semester rumgeschlagen. Die Vorlesung hieß
"Nebenläufige Programmierung". Sie läuft bisher erst das dritte mal und wurde auch erst
dieses Jahr als Pflichtvorlesung festgelegt.
Schließlich wird das Programmieren auf Systemen mit mehreren Kernen immer wichtiger in
der heutigen Zeit. Jeder neue Desktop-Rechner und jeder Laptop hat mittlerweile
mindestens einen Dual-Core oder vielleicht sogar eine CUDA-fähige Grafikkarte.

Ich muss sagen, das war bisher eine meiner besten Vorlesungen war.

Ich würde euch ja gerne die Videos, die Folien und das Skript zur Verfügung stellen, wenn
ich dürfte. Deswegen ein kleiner Buchtipp von mir:

"The Art of Multiprocessor Programming" von "Maurice Herlihy & Nir Shavit".

Das ist ein tolles Buch mit allerlei Konzepten um effizient Arbeit auf mehrere Threads zu
verteilen. Die Beispielcodes im Buch sind in Java gehalten und somit leicht verständlich.


Jetzt hab ich zwar wieder viel zu viel ausgeholt, aber ich musste das gerade mal
aloswerden. :mrgreen:

Verfasst: 01.08.2009 20:06
von WPö
Noch kürzer:
x = 3 - x
Vorher freilich mit 1 oder 2 initialisieren, fertig.

Ob nun eine XODER-Operation (x!1) oder eine SUBtraktion, ist von der Geschwindigkeit her wahrscheinlich wurscht - jedenfalls extrem gering.

WPö

Verfasst: 01.08.2009 20:33
von Kaeru Gaman
WPo hat geschrieben:Noch kürzer:
x = 3 - x
Vorher freilich mit 1 oder 2 initialisieren, fertig.
http://www.purebasic.fr/german/viewtopi ... 706#250706

Verfasst: 01.08.2009 21:27
von WPö
Kaeru Gaman hat geschrieben:
WPo hat geschrieben:Noch kürzer:
x = 3 - x
Vorher freilich mit 1 oder 2 initialisieren, fertig.
http://www.purebasic.fr/german/viewtopi ... 706#250706
Aua. Hab ich doch glatt drübergelesen. :oops:
Gruß - WPö

Re: If x = 1 and x = 2

Verfasst: 11.11.2012 19:19
von NicTheQuick
Wie wäre es mit:

Code: Alles auswählen

Repeat
  *x\i = 1
  *x\i = 2
ForEver
:mrgreen:

Re: If x = 1 and x = 2

Verfasst: 12.11.2012 19:37
von HeX0R
Bild
:mrgreen: