Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

26.08.2008, 14:02

Quellcode

1
2
3
4
5
6
7
not_done = true;
while( not_done )
{
  reciveMessage
  delegateMessage
  do stuff
}

Sollte der Thread doch mal beendet werden sollen, so setze im Hauptprogramm not_done einfach auf false.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

26.08.2008, 14:09

Wenns für Windows sein soll, schau dir mal WSAAsyncSelect() an ;)

13

26.08.2008, 14:13

Es gabt auch irgendwo ein Tutorial fur das (POSIX) select, mit dem man 1000 und mehr Verbindungen in nur einem einzigen Thread behandelt hat. K.A. wo genau, lange ist es her -:).

14

26.08.2008, 14:15

@dot: Im Moment für Windows soll aber später auch unter Linux laufen.

@knivil: Verstehe ich das richtig?
bot_done ist praktisch mein queue und die Schleife wird im Thread ausgeführt? Könntest du das Snippet kurz erläutern?
Ich muss gestehen jetzt wird es etwas schwierig für mich.
Arbeitswut ist eine psychische Störung, die schon mit einer Tasse Kaffee und einem netten Gespräch geheilt werden kann

15

26.08.2008, 14:19

@knivil: ich weiß nicht recht ob select für mein vorhaben einen Sinn macht, da der Server der mir was schickt immer der gleiche ist.
Arbeitswut ist eine psychische Störung, die schon mit einer Tasse Kaffee und einem netten Gespräch geheilt werden kann

16

26.08.2008, 14:35

Threads teilen sich den Speicher des gesamten Programms, besitzen aber einen eigenen Stack. Ich bleibe mal bei C++, not_done ist vom Typ bool und gibt einfach an ob die Schleife verlassen / die Threadfunktion beendet werden soll oder nicht. Sagen wir mal, es soll eine globale Variable sein. Die Schleife selbst ist in deiner Threadfunktion. Was du in dieser Schleife machen willst bleibt dir ueberlassen und unterscheidet sich kaum von normaler Programmierung. Falls aber auf bestimmte Variablen/Arrays/... aus mehreren Threads zugegriffen wird, so muss dieser Zugriff synchronisiert werden.

17

26.08.2008, 15:03

Ok das sich Thread und Programm den Speicher teilen war mir schon bewusst. Allerdings muss ich ja auch ehrlich gestehen dass ich das erste Mal in der Art mit Threads in Berührung komme. Ich habe zwar schon mal ein bisserl damit rumgetestet allerdings noch nie so intensiv. Und das ist ja doch ein ziemlich komplexes Thema. Soweit habe ich das bisher verstanden. Also erstmal danke für die vielen Infos und Hilfen, versuch jetzt erstmal wieder alleine damit klar zu kommen.

Falls ich dennoch Fragen habe (und die hab ich bestimmt:D) komme ich auf euch zurück wenns genehm ist:D
Arbeitswut ist eine psychische Störung, die schon mit einer Tasse Kaffee und einem netten Gespräch geheilt werden kann

Werbeanzeige