Multithreading ?!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Sebastian

Betreff: Multithreading ?!

BeitragDi, Aug 17, 2004 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist es möglich in B3d eine Art Multithreading zu implementieren ??

Multithreading heißt mehre Prozesse paralell oder
pseudoparalell aulaufen zu lassen.

Gibst irgentne dll oder so was mit der das machbar wäre ???

Notfalls stell ich halt auf C++.
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !

Hubsi

BeitragDi, Aug 17, 2004 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit an Sicherheit grenzender Wahrscheinlichkeit gehts nicht Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Sebastian

BeitragDi, Aug 17, 2004 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatt ne Idee.

Wenn ich als Thread eine Exe benutze, die als dienst läuft müsste es klappen.

Jetzt hab ich nur noch ein Problem :

Diese 'Threads' könnten keine Daten austauschen....
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !

Hubsi

BeitragDi, Aug 17, 2004 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Netzwerkbefehlen könnte es klappen (lokale IP 127.0.0.1)
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Sebastian

BeitragDi, Aug 17, 2004 11:02
Antworten mit Zitat
Benutzer-Profile anzeigen
SCH****

Das mit dem Dienst funtzt nur bei WinNT. .....
 

Jake

BeitragDi, Aug 17, 2004 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck mal unter http://koriolis.free.fr/bvm/

Damit kannst du ein simples Multithreathing hinkriegen (laut FAQ zumindest, hab es selber nie probiert).

tft

BeitragDi, Aug 17, 2004 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi......

echtes multi kanst du nur mit den WinApi machen. Dazu brauchst du Struckturen und zeiger. Das gibt es in Blitz nicht. Aber du kanst dein eigenes Spseude multi machen. Du must nur die Main schleife entsprechend aufbauen.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Vertex

BeitragDi, Aug 17, 2004 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hust, seid wann kann man keine Strukturen in Blitz machen - Stichwort Banks. Das einzige Prob das es gibt ist das, dass man nicht an die Funktionspointer kommt.
mfg olli
vertex.dreamfall.at | GitHub

Sebastian

BeitragDi, Aug 17, 2004 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will Prozesse paralell ablaufen lassen .

Mit banks hat das meiner meinung nach wenif zu tun !!
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

walski

Ehemaliger Admin

BeitragDi, Aug 17, 2004 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt eben keine Threads oder sowas in BB, aber ich den wenigsten Fälle braucht man die wirklich, sondern es lässt sicher einfach meist ne einfacherere Lösung finden Wink

Wenn dus nicht vermeiden kannst, und auf Basic nicht verzichten möchtest, dann musst du, Wohl oder Übel, Purebasic nutzen.

walski
buh!
 

Dreamora

BeitragDi, Aug 17, 2004 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
wie gesagt, guck dir die BVM an die kann es
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Sebastian

BeitragDi, Aug 17, 2004 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Tft

Main schleife richtig aufbauen aha klar , oder doch nicht .

Kannste mal ein beispiel Posten ????
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

Dreamora

BeitragDi, Aug 17, 2004 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist kein MultiThreading möglich mit einem linearen Programm.

Du kannst nur durch TimedFunctions die Systemzeit sinnvoller nutzen ( heisst das du funktionen nur nach bestimmten Zeitabständen aufrufst, net jedes Frame. zB netzwerk transfer oder tasteneingabe )

Multithreading würde heissen, dass du mehrere Funktionen parallel aufrufst was in Blitz3D net möglich ist, kann jedoch über die BVM ermöglicht werden oder über Banks und ne Nutzung einer Userlib aus ner anderen Sprache wie zB PureBasic oder C++
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragDi, Aug 17, 2004 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi......

einer meiner lieblings Kniffe ist es , zu erkunden wiefiel Rechenzeit eine separate Procedure benötigt. Sagen wir mal ich habe 10 Rutinen die eigentlich paralel laufen sollen. Da es Paralele Abarbeitung nicht wirklich giebt. Auch das Bertiebssystem macht nur gefaiktes Multi. Teile ich jedem etwas rechenzeit zu. Sagen wir 10 ms, dann konstruiere ich die Rutine so, das sie beim abarbeiten schaut ob die 10 ms schon vorbei sind. Wenn ja wird die Rutine verlassen. Wichtig ist dabei das die Variablen Global sind. Damit beim widereinstieg die richtigen werte zur verfügung stehen.
Wichtig ist auch zur ergründen ob jede Rutine wirklich in jedem Durchlauf auch abgearbeitet werden muss. Bei einem Radar zum beispiel reicht es den Inhalt alle 20 ms zu erneuren. Die Tasten brauchen auch nur alle 20 ms abgefragt werden. (Ausser die Wichtigen) Wenn du mer darüber nachdengst wirst du fiele elemente deines Codes finden, die nicht jeden Frame abgearbeitet werden muss. Animationen zum beispiel, lassen sich gut aufteilen. Da der Mensch nur 24 Bilder pro Secunde warnimmt. Reicht es aus nur jeden 2. Frame einer Animation zu berechen. Es giebt fiele solche kniffe die man anwenden kann. Probiere einfach deine Ideen aus.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Sebastian

BeitragMi, Aug 18, 2004 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das was du vaorschlägst ist eine Art Prozess-zeit gesteuertes multi ähnlich wie bei DOS6 oder NovellDOS. Für RPG und ä. reicht das , aber für ein Client Server sytem indem drei Prozesse ohne unterbrechung prallel laufen müssen ?!

Ich glauch ich nem Knoppix und verwende ein C++ mit fork() da kriegt jeder Client nen eingen Sub-Prozess. Das wird zwar etwas difficile.

Aber ich glaube damit lässt sich was anfangen.
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

Dreamora

BeitragMi, Aug 18, 2004 9:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Parallel hast du eh nur auf Multiprozessorsystemen oder Systemen mit HT Prozessoren die zudem WinXP / 2k nutzen, bei allen anderen lohnt der Aufwand von ner UserLib für reale Threads net wirklich
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

morszeck

BeitragMi, Aug 18, 2004 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Windows unterstützt von hause aus an MT, du musst nur jeden Prozesse seperat starten und über den LocalHost musst du kommunizieren...

IST DOCH EASY
WinXpProf&SP2, B3D V1.88, B+ V1.40, BMax101Beta, AMD TB1.4GHz, DDR266/768MB, GeForce3@64MB
 

sdjh

BeitragSa, Aug 21, 2004 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie tft gesagt hat:
1) ist's eh nicht wirklich möglich und deshalb
2) einfach Funktionen schreiben, die Berechungen unterbrechen.

Wenn du Beispielweise so was machst

Code: [AUSKLAPPEN]

type datei
field source
end type
type linie
field l$
end type

function offnedatei(pfad$)
d.datei=new datei
d\source=readfile(pfad$)
d\pos=0
end function

function lesedatei(o)
d.datei=object.datei(o)
l.linie=new linie
l\l$=readline(d\source)
end function


so kannst du mehrere Dateien "gleichzeitig" auslesen.
Wenn du noch etwas dran arbeitest kann du ein Threat bis auf ein Byte pro Lesedurchgang beschränken.

Aber ansonsten einfach Funktionen so schnell programmieren, dass sie liniear berechnet auch ohne Holpern durch kommen Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group