Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Degolino
Anmeldungsdatum: 19.07.2006 Beiträge: 48
|
Verfasst am: 17.10.2006, 12:31 Titel: 2 schachen |
|
|
Wie kann ich zwei sachen gleichzeitig laufen lasen???
und nicht nacheinander!!!!! |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.10.2006, 12:35 Titel: |
|
|
Das ist mit QB net möglich. Auch mit DOS net. Und mit Windows genauso wenig. Es sei denn, du hast ein Doppelkern- oder Doppelprozessorsystem.
Selbst bei Windows-Einprozessorsystemen wird nur "vorgespielt", dass mehrere Sachen gleichzeitig ablaufen. In Wirklichkeit wird aber nacheinander abgearbeitet->Task-Switch.
Aber in QB isses so ähnlich möglich. Man müsste halt nur wissen, was du beides gleichzeitig machen willst. Meinetwegen Tastatureingabe is' was anderes als was anderes.
Bei Tastatureingaben und gleichzeitigem Zeichnen zum Beispiel kannst du mit On Key arbeiten.
Oder du gehst gleich zu Assembler über, dort hast du fast volle Kontrolle über den Prozessor - und da ein Befehl net so lange dauert, kannst du kurz woanders hinspringen dort ein Befehl abarbeiten lassen und wieder zurückspringen, was den Schein wahrt, dass was gleichzeitig passiert. *nicht-ganz-so-ernst-mein*
Also man müsste wie gesagt schon wissen, was du gleichzeitig ablaufen lassen willst.
Greets,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 17.10.2006, 15:13 Titel: |
|
|
Oder man geht einfach zu FreeBASIC rüber, und arbeitet mit Threadcreate, dann hat man nämlich Multitasking  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.10.2006, 15:20 Titel: |
|
|
Aber tief im Inneren wird trotzdem nur nacheinander gearbeitet!
Ich persönlich find das eigentlich interessant, wenn man sich selbst darum kümmern muss, dass es so aussieht als würde etwas gleichzeitig ablaufen. Aber naja, sieht wohl jeder etwas anders.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Elvis

Anmeldungsdatum: 01.06.2006 Beiträge: 818 Wohnort: Deutschland, BW
|
Verfasst am: 17.10.2006, 16:02 Titel: |
|
|
Mao hat Folgendes geschrieben: | ...es sei denn, du hast ein Doppelkern- oder Doppelprozessorsystem. ...
|
In 10-15 Jahren wird das sicher standard sein, vielleicht auch schon drei oder mehr
Prozessoren...
Aber bis dahin hast du sicher schon eine andere Methode...
Grüße, Elvis _________________ Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+ |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.10.2006, 16:41 Titel: |
|
|
Selbst wenn in 10-15 Jahren 4 Prozessorsysteme mit Doppelkernprozessoren Standard sind ( ), wird, wenn es dann immer noch eine Art ntvdm gibt (was aber nicht sein wird ), QB trotzdem nacheinander abarbeiten. Is' halt von damals und nicht auf die Verwendung von Threads oder sogar mehreren Prozessoren ausgelegt.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 17.10.2006, 19:59 Titel: |
|
|
Also allgemein kannst du das so machen:
Code: |
DIM Task AS INTEGER
DIM TaskCount AS INTEGER
TaskCount = 10 ' Wie viele Tasks?
FOR Task = 1 TO TaskCount
' Welcher Task?
SELECT CASE Task
' Task Nr. 1
CASE 1
' [...]
' Task Nr. 2
CASE 2
' [...]
' [...]
END SELECT
NEXT TaskCount
|
Nur so als grobe Idee des Prozesses.
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 17.10.2006, 22:36 Titel: |
|
|
Das Problem ist aber immer, wenn man blocking calls hat.
Input kann man ja leicht ersetzen.
Aber es gibt auch manche Sachen, die kann man nicht so einfach ändern. _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 19.10.2006, 14:11 Titel: |
|
|
Artikel zum Titelthema:
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/EreignisSchleife.html
Grundprinzip: Alles nicht-blockierende Abfragebefehle verwenden (z.B. INPUT ist blockierend, denn es hält den Programmablauf an, bis die Eingabe mit <Enter> abgeschlossen wird, während dagegen INKEY$ nicht blockiert). Ebenso "exklusive" Schleifen eliminieren, z.B.
Code: | t! = TIMER + 2!
WHILE TIMER < t!
WEND |
und stattdessen das IF-basierte Konzept verwenden:
Code: | tNaechst! = TIMER + 2!
DO
' Riesenschleife
' ...
IF TIMER >= tNaechst! THEN
MachDasGewünschte
tNaechst! = tNaechst! + 1!
END IF
' ...
LOOP |
_________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|