VisualBasic & C++ & PowerBasic - Forum

Qt4 + Powerbasic + WinAPI + COM+ >> Qt4, WinAPI, COM+

springe zur ersten ungelesenem Nachricht. Seiten in diesem Thread: 1
  Allg: 100.000 Threads ...
    #33778 - 14:53 22/08/2006 Anhang (237 downloads)
LordchenModerator
Champion



Reged: 21:38
Beitrag: 4575
Ort: Baden, Karlsruhe

ja wirklich: 100.000 Threads wurden gestartet.
der praktische Wert ist Sicherheit im Umgang damit, sonst keinen Wert und

Ziel eindeutig: Das System zum Absturz bringen ...

Daraus wurde aber nix

Wie das?
Eine reine Zeitfrage und das Multitasking von Windows. Es liefen
tatsächlich nie mehr als 300-600 Threads. Wurde z.B. Thread 2000 gestartet,
waren die ersten paar Thread schon am Ende.

Gucken wir mal die Main - Routine von diesem Ding an

Code:

#include "m_Thread.h"

int main(int argc, char** argv){
m_Thread t;

for(int i=0; i<100000;++i) t.Run();

MessageBoxA(NULL, "OK", "OK", 64);
return 0;
}



*räusperchen* Lordchen hat die Threads doch nicht etwa ...
Doch! Genau: In eine Klasse gepackt! Deren Methode ist Run().

Die m_Thread.h

Code:

#ifndef m_Thread
#define m_Thread
#ifndef WS_VISIBLE
#include <windows.h>
#include <iostream>
#endif

class m_Thread{

private:
static void mythread(int i){
long n=0;
while(true){
InterlockedIncrement(&n);
if(n > 5000){
std::cout << "und tschüss " << i << std::endl;
break;
}
}
};
public:
void Run();
};
#endif



Interlocked ... also den ThreadStack geärgert

Die m_Thread.cpp

Code:

#include "m_Thread.h"

void m_Thread::Run(){
DWORD nID;
HANDLE iThread = NULL;
static int i = 0;

++i;
iThread=CreateThread(NULL,0,
(LPTHREAD_START_ROUTINE) mythread,(void*)i,0,&nID);
};



Also, easy Handling mit Threads in Klassen

Das Ding pushed den Stack ganz schön auf, wie das Bild zeigt:


--------------------


Lordchen
(Der Mann der schneller proggt als sein Schatten)

Bearbeitet von Lordchen (14:55 22/08/2006)


Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: Lordchen] #33779 - 00:32 23/08/2006
DrGonzo
Junior Master



Reged: 18:28
Beitrag: 142

Nur eine kleine Spielerei nehme ich an?

Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: DrGonzo] #33781 - 12:27 23/08/2006
LordchenModerator
Champion



Reged: 21:38
Beitrag: 4575
Ort: Baden, Karlsruhe

Hi,

jain

Zitat: "ja wirklich: 100.000 Threads wurden gestartet.
der praktische Wert ist Sicherheit im Umgang damit, sonst keinen Wert und

Ziel eindeutig: Das System zum Absturz bringen ...

Daraus wurde aber nix"

Sonst: Abwarten grundlos passiert hier nichts.

--------------------


Lordchen
(Der Mann der schneller proggt als sein Schatten)


Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: Lordchen] #34106 - 20:10 17/11/2006
DrGonzo
Junior Master



Reged: 18:28
Beitrag: 142

Hallo!
Ich frage mich momentan, wozu ich Threads in einer Anwendung einbauen sollte, welche Vorteile sie mir verschaffen etc...?
Kannst du mir das bitte erklären??


Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: DrGonzo] #34169 - 06:58 26/12/2006
HelmutModerator
Champion



Reged: 11:35
Beitrag: 1576
Ort: Frankenmarkt

Hallo Leute

Hmm. Ich hätte die selbe Frage, wie DrGonzo.

--------------------
mfg Helmut

[C- und VHDL-User]


Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: Helmut] #34176 - 20:56 29/12/2006
LordchenModerator
Champion



Reged: 21:38
Beitrag: 4575
Ort: Baden, Karlsruhe

Hi allz,

die Antwort ist eigentlich einfach:
Threads bringen nichts wenn Du nur 1 Prozessor hast und aber doch was, wenn tatsächlich
zwei oder mehrere Aufgaben gleichzeitig erledigt werden können.

1. Fall: Der ThreadServer

Der überwacht einen Port und regelt den Verkehr mit dem Clienten.

2. Fall: Der MailslotClient

Der überwacht Mailslots auf ankommende Mails

3. Fall: Der named Pipe Client

der überwacht namend Pipes

u.s.w. u.s.w

dann gibt es noch viele Möglichkeiten sinnvoll Threads zu launchen ...

für alle diese Typen stellt die Kernel Waitroutines zur Verfügung die nur von Threads benützt
werden können die nicht zufällig der Initialthread ist.
Wenn man immer nur Singlethreading gewohnt ist - kennt man diese Welt eigentlich nicht so
richtig

--------------------


Lordchen
(Der Mann der schneller proggt als sein Schatten)


Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: Lordchen] #34190 - 12:26 04/01/2007
DrGonzo
Junior Master



Reged: 18:28
Beitrag: 142

Hi, das verstehe ich nicht ganz:

für alle diese Typen stellt die Kernel Waitroutines zur Verfügung die nur von Threads benützt
werden können die nicht zufällig der Initialthread ist.



Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
  Re: Allg: 100.000 Threads ...
    [Re: DrGonzo] #34195 - 20:55 04/01/2007
LordchenModerator
Champion



Reged: 21:38
Beitrag: 4575
Ort: Baden, Karlsruhe

Hi DrGonzo

der Initialthread ist der Thread, mit dem Dein Programm gestartet wurde
Den wirst du ja nicht bremsen wollen - oder?

Wenn ja,

gib einfach irgendwo:

Sleep &Hffffffff

ein und Du verstehst den Satz sofort

--------------------


Lordchen
(Der Mann der schneller proggt als sein Schatten)


Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
Seiten in diesem Thread: 1



Extra Informationen
0 registrierte und 0 anonyme Benutzer betrachten dieses Forum.

Moderator:  VFensterB, Lordchen, MiB, Claus, Helmut 

drucke Thema

Rechte
      Du kannst keine neue Nachrichten schreiben
      Du kannst keine Antworten schreiben
      HTML ist deaktiviert
      UBBCode ist aktiv

Bewertung:
Thema gelesen: 3326

Bewerte dieses Thema mit 

Sprung zu

Email an visualbasic.at visualbasic.at

*
UBB.threads™ 6.5.1


Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Warning: Unknown: open(/var/www/2503bit1205/forum/sessions/sess_4f5ae2e28e578588e77ce794bde3c3da, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/2503bit1205/forum/sessions) in Unknown on line 0