Multithreading ?!
Übersicht

![]() |
SebastianBetreff: Multithreading ?! |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit an Sicherheit grenzender Wahrscheinlichkeit gehts nicht ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
SCH****
Das mit dem Dienst funtzt nur bei WinNT. ..... |
||
Jake |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guck mal unter http://koriolis.free.fr/bvm/
Damit kannst du ein simples Multithreathing hinkriegen (laut FAQ zumindest, hab es selber nie probiert). |
||
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ! |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Wenn dus nicht vermeiden kannst, und auf Basic nicht verzichten möchtest, dann musst du, Wohl oder Übel, Purebasic nutzen. walski |
||
buh! |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group