Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Was ist ein Thread

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
17.11.2004, 21:52 Uhr
derphilipder



Hi!

Kann mir das jemand einigermaßen verständlich erklären, was das ist?
Oder vielleicht hat jemand einen guten Link...

mfg Philip
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.11.2004, 21:55 Uhr
0xdeadbeef
Gott
(Operator)


Threads sind im Grunde parallel ablaufende Programmstücke, die innerhalb eines Prozesses ablaufen. Du kannst es dir grob wie Prozesse vorstellen, die sich den selben Adressraum teilen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.11.2004, 15:29 Uhr
derphilipder



Aha, und wie wird das prinzipiell in einem C++ Programm realisiert?
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.11.2004, 15:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zunächst einmal gar nicht..., boost soll wohl sowas anbieten gehört aber noch nicht zum standard... in sofern sind threads und Co in C/C++ OS abhängig
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.11.2004, 15:50 Uhr
derphilipder



Ok, auch wenn ich damit dann im falschen Forum bin...ich versuche gerade mich in Qt einzuarbeiten und frage mich, wie das da gemacht wird. Aber auch wie das generell in C++ Klassenbibliotheken gehandhabt wird...

In Qt gibt es ja die Klasse QThread. Heißt das, wenn Klassen parallel arbeiten sollen, müssen sie von QThread abgeleitet sein?

Ich hoffe mal, die Fragen sind nicht allzu dämlich, ich weiß aber auch nicht recht, wie ich das ausdrücken soll...
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.11.2004, 16:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


kenn mich mit Qt nicht gut aus und ist schon 2 Jahre her wo ich damit mal rumgespielt habe. QThread hab ich noch nicht benutzt aber um deine Frage zu beantworten würde ich nach kurzen blick auf trolltech.com sagen ja... Klasse von QThread ableiten und der Teil der in nem Thread laufen soll in der run-methode implementieren (die du ja überschreiben musst). start schmeisst dann den spass an... das ist irgendwie Javalike gemacht... wenn du sonst Threads unter C/C++ verwendest läuft das anderes
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.11.2004, 17:01 Uhr
0xdeadbeef
Gott
(Operator)


Im Zweifel wrappt das alles auf die eine oder andere Art und Weise pthreads, zumindest unter UNIX/Linux. Ich fand das boost::thread-interface ziemlich gut, wies bei Qt aussieht, weiß ich nicht. Mit boost::thread sähe das zum Beispiel so aus:

C++:
#include <iostream>

#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>

unsigned counter = 0;

class cnt_thread {
private:
  bool &m_interrupted;

public:
  cnt_thread(bool &interrupt) : m_interrupted(interrupt) { }
  void operator()(){
    while(!m_interrupted) {
      ++counter;
      std::cout << "cnt_thread" << std::endl;

      boost::xtime xt;
      boost::xtime_get(&xt, boost::TIME_UTC);
      ++xt.sec;

      boost::thread::sleep(xt);
    }
  }
};

class ctl_thread {
private:
  bool &m_interrupt_cnt_thread;

public:
  ctl_thread(bool &interrupt_cnt_thread)
    : m_interrupt_cnt_thread(interrupt_cnt_thread) { }

  void operator()() {
    for(int i = 0; i < 5; ++i) {
      boost::xtime xt;
      boost::xtime_get(&xt, boost::TIME_UTC);
      xt.sec += 5;

      boost::thread::sleep(xt);

      std::cout << "ctl_thread: " << counter << std::endl;
    }

    m_interrupt_cnt_thread = true;
  }
};

int main() {
  bool interrupt_flag = false;

  cnt_thread cnt_th(interrupt_flag);
  ctl_thread ctl_th(interrupt_flag);

  std::cout << "main start" << std::endl;

  boost::thread cnt_bth(cnt_th);
  boost::thread ctl_bth(ctl_th);

  ctl_bth.join();

  std::cout << "main end" << std::endl;

  return 0;
}


Im Grunde wird der boost::thread halt mit einem Funktionsobjekt initialisiert, das er dann abarbeitet.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.11.2004, 17:05 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
nette idee von dir mal ein boostbeispiel dafür zu posten... boost hab ich mir noch gar nicht angeguckt und wenn es demnächst zum standard gehören sollte ist es ja absoluter muss das mal anzuschauen... sollten wir in die FAQ schieben oder?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.11.2004, 17:49 Uhr
derphilipder



Hmm...mir ist jetzt grad nicht ganz klar, was dieses boost für eine Klasse ist.
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.11.2004, 17:52 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


du brauchst nicht das teil von beefy zu nehmen... wenn du mit Qt arbeitest dann verwende doch die QThread Klasse, scheint mir doch ne feine sache zu sein
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: