Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

2 schachen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Degolino



Anmeldungsdatum: 19.07.2006
Beiträge: 48

BeitragVerfasst am: 17.10.2006, 12:31    Titel: 2 schachen Antworten mit Zitat

Wie kann ich zwei sachen gleichzeitig laufen lasen???
und nicht nacheinander!!!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 17.10.2006, 12:35    Titel: Antworten mit Zitat

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. zwinkern
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. durchgeknallt
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* zwinkern

Also man müsste wie gesagt schon wissen, was du gleichzeitig ablaufen lassen willst. zwinkern

Greets,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 17.10.2006, 15:13    Titel: Antworten mit Zitat

Oder man geht einfach zu FreeBASIC rüber, und arbeitet mit Threadcreate, dann hat man nämlich Multitasking happy
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 17.10.2006, 15:20    Titel: Antworten mit Zitat

Aber tief im Inneren wird trotzdem nur nacheinander gearbeitet! Zunge rausstrecken lachen
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. happy
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 17.10.2006, 16:02    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
...es sei denn, du hast ein Doppelkern- oder Doppelprozessorsystem. zwinkern...

In 10-15 Jahren wird das sicher standard sein, vielleicht auch schon drei oder mehr
Prozessoren... cool
Aber bis dahin hast du sicher schon eine andere Methode... lachen


Grüße, Elvis
_________________
Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 17.10.2006, 16:41    Titel: Antworten mit Zitat

Selbst wenn in 10-15 Jahren 4 Prozessorsysteme mit Doppelkernprozessoren Standard sind (durchgeknallt), wird, wenn es dann immer noch eine Art ntvdm gibt (was aber nicht sein wird traurig), QB trotzdem nacheinander abarbeiten. Is' halt von damals und nicht auf die Verwendung von Threads oder sogar mehreren Prozessoren ausgelegt. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 17.10.2006, 19:59    Titel: Antworten mit Zitat

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. lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 17.10.2006, 22:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 19.10.2006, 14:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz