2 Aufgaben gleichzeitig erledigen (Multi Tasking?)
-
hallo zusammen
also ich hab den borland c++ builder mehr oda weniger grundkenntnise in cpp...
naja also meine frage:ich hab vor ein einfaches programm zu schreiben, welches 2 aufgaben gleichzeitig erledigt
also ganz simpel: eine variable i soll in einer endlos schleife hochgezählt werden.
!gleichzeitig! soll jetzt in der konsole der aktuelle wert ausgegeben werden.un das soll gleichzeitig in 2 funktionen passieren...
int zaehle_i() { int i; while(1) { i++; return(i); } } void gebe_i_aus() { cout << zaehle_i(); } void main() { . . . }wie muss also nun main() aussehen??
danke schonmal für die antworten!!
mfG graphix
-
??
Denke nicht das das so meinst...
zaehlen() { int i=0; while(true) { i++; cout<<i; } } main() { zaehlen(); ///Warte bis funktion beendet und weitergehts }Möglichkeit 2 Threads
http://www.codeworx.org/cpp_tuts_1_5.php
das tutorial ist ganz gut guck dir das mal an
-
Ich denke nicht, dass für dein Problem Threads nötig sind.
Willst du dafür wirklich zwei Funktionen? Das kann man ja in einer erledigen. Ich hab hier einmal eine mögliche Lösungsvariante (trotzdem für 2 Funktionen) aufgeschrieben:int zaehle_i() { static int i = 0; // wenn du i weiterzählen willst, muss es statisch sein. Zudem musst du es initialisieren. i++; return i; // return ist keine Funktion, deshalb sind Klammern nicht nötig } void gebe_i_aus() { cout << zaehle_i() << endl; // ich hab Zeilenumbruch hinzugefügt } int main() // main() ist IMMER int!!! { while (true) { gebe_i_aus(); } }Und hier noch die einfache Möglichkeit (aber man kanns ja auch kompliziert machen):
int main() { for (int i = 0; i++; true) { cout << i << endl; } }
-
Nexus schrieb:
...
Ich denke nicht, dass das im Sinne es OT war. Ich denke eher, dass er einfach ein unglückliches Beispiel genommen hat.

Hast natürlich Recht, aber ich denke, er wollte ursprünglich dennoch Threads haben..

-
hmm also die antowrten sind gut auf jeden fall, nur ich glaub ich hab meine frage nich ganz richtig formuliert^^
oder das beispiel war doof...
naja also
ich bin dabei bzw schon fertig ein programm zu schrieben, was ständig (in einer while schleife) eine datei verändert dann in minuten abständen verschlüsselt, diese hochläd...wihle schleife im ersten prog --> mein problem!!!
bisher hab ich das so gelöst:
#include <fstream.h> #include <iostream.h> #include <conio.h> #include "funcs.h" void main() { while(1) { char check_var_char; struct config { char server[30]; char username[20]; char passwd[30]; char file_path[256]; }; struct config data; fstream check; ifstream cfg("sets.cfg",ios::in); cfg.getline(data.server,30,'\n'); cfg.getline(data.username,20,'\n'); cfg.getline(data.passwd,30,'\n'); cfg.getline(data.file_path,256,'\n'); while(check_var_char != '1') { check.open("check.dat",ios::in); check.get(check_var_char); check.close(); Sleep(10000); } HINTERNET hOpen, hConnection; hOpen = InternetOpen("FTPUpload", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); hConnection = InternetConnect(hOpen, data.server, INTERNET_DEFAULT_FTP_PORT, data.username, data.passwd, INTERNET_SERVICE_FTP, 0, 0); FtpPutFile(hConnection, data.file_path, data.file_path, FTP_TRANSFER_TYPE_ASCII, 0); InternetCloseHandle(hConnection); InternetCloseHandle(hOpen); check.open("check.dat",ios::out); check << "0"; check.close(); }die datei wird unabhängig geschrieben....dann in minutentakt verschlüsselt und
der "ftp uploader" läd sobald der crypter in die datei "check.dat" eine 1 schreibt die verschlüsselte datei hoch....--> scheiß lösung...
nun will ich alle 3 progs in 1 packen....also:
die datei wird geschrieben (in einer while schleife!!!)...!unabhängig davon! wird sie verschlüsselt...und dann hochgeladen...und eben wärend dessen läuft der schreib vorgang weiter...klar das mit verschlüsseln un hochladne in einem is kein prob....aber das die datei ständig verändert wird...naja hoffe man kann damit mehr anfangen

danke!!
PS: bin auf ner IT schule und main MUSS kein return wert haben^^...in der konsolenprogrammierung haben wir anstatt
return 0den befehl:
getch();...naja^^
mfG graphix
-
Also ich würde immernoch sagen,dass du da Multithreading haben willst.
Also du schreibst in einer Schlaufe etwas in eine Datei, nicht?
Dann kannst du das mit einem Thread machen und dann jede Minute nimmst du einfach den ganzen Inhalt und lädst in hoch. (im anderen Thread).Wobei ich das ein wenig ungeschickt finde. Ich würde das so machen, dass ich ganz normal in der Schlaufe schreibe und dann nach 1 Minute kurz warte, um die Datei hochzuladen. Das wäre dann ganz einfach mit einer Funktion gelöst.
PS: bin auf ner IT schule und main MUSS kein return wert haben^^...in der konsolenprogrammierung haben wir anstatt
Naja. Dann ist das keine gute Schule.
- Jede Funktion, die einen Rückgabewert hat, muss auch einen Wert zurückgeben. Wenn es (und das kann ich mir jetzt nicht vorstellen) funktioniert, dann ist das kein Standardkonformes Verhalten und du solltest den Compiler in die Tonne werfen.
Achja. getch () ist kein Befehl, sonder eine FUNKTION! Und hat nix mit dem Rückgabewert zu tun.
-
Der Rückgabetyp von main ist stets und war schon immer int.
Wenn der Programmablauf das Ende von main erreicht, ohne auf eine return-Anweisung zu stoßen, so ist hat das den gleichen Effekt als ob return 0; dort als letzte Anweisung stünde, d.h. eine return-Anweisung ist in main nicht erforderlich.
-
camper schrieb:
Der Rückgabetyp von main ist stets und war schon immer int.
Wenn der Programmablauf das Ende von main erreicht, ohne auf eine return-Anweisung zu stoßen, so ist hat das den gleichen Effekt als ob return 0; dort als letzte Anweisung stünde, d.h. eine return-Anweisung ist in main nicht erforderlich.Mist. Ja, sorry. Mein Fehler.

-
es geht ja auch vielmehr um
void main()als um returns
