Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 11:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



QT Multithreading

Discussion on QT Multithreading within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Bombasticx3's Avatar
 
elite*gold: 0
The Black Market: 173/1/0
Join Date: Oct 2011
Posts: 4,607
Received Thanks: 674
QT Multithreading

Hey yo,

habe folgendes Problem:

Ich möchte Multithreading in Qt 5.8 machen in C++.
Dabei habe ich eine Methode die auf Knopfdruck auf der GUI eine While-Schleife aufruft.
Danach wird die GUI unbrauchbar und stürzt ab.
Jedoch soll auf erneuten Knopfdruck die Methode beendet werden.

Worker bei Click auf Button aufrufen.
While Schleife starten.
Absturz.

Meine Überlegeung:
Window in 1. Thread
Methode in 2. Thread
Problem -> Window mit a.exec im Thread starten ist nicht möglich, da a.exec im gleichen Thread wie die Main-Methode sein muss.

Deswegen bin ich jetzt ziemlich planlos.

Code:
main.cpp
Window aufruf

mainwindow.cpp
Methode on_click(){worker}

mainwindow.h

worker(){while(true)
foo();};
MfG Bombasticx3
Bombasticx3 is offline  
Old 03/03/2017, 23:24   #2
dotCom
 
Devsome's Avatar
 
elite*gold: 12400
The Black Market: 104/0/0
Join Date: Mar 2009
Posts: 15,875
Received Thanks: 4,381
#moved
Devsome is offline  
Old 03/03/2017, 23:25   #3
 
elite*gold: 8
Join Date: Sep 2014
Posts: 625
Received Thanks: 177
Starte einfach aus dem GUI-Thread heraus einen neuen Thread.


Gruß

qqdev
qqdev is offline  
Thanks
1 User
Old 03/08/2017, 21:25   #4
 
elite*gold: 0
Join Date: Mar 2017
Posts: 2
Received Thanks: 2

da ist doch alles was du brauchst?
lua god is offline  
Old 03/08/2017, 22:02   #5
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Solange es simpel bleibt kannst du
Code:
QApplication::processEvents()
verwenden, das unterbricht kurz und feuert alle events die sich bis dahin in der Queue befinden. Wenn du das in der Schleife aufrufst können dann währenddessen der Code aus z.B. deinem Abbrechen button ausgeführt werden, und nachdem alle events abgearbeitet sind returned die Funktion wieder und deine schleife geht weiter.

Natürlich musst du dabei aufpassen, und niemals zu viel /blockierenden code in den Events ausführen. Aber gleichzeitig vermeidest du die Probleme mit multithreading die wirklich beschissen zu finden und zu Debuggen sind
warfley is offline  
Old 03/12/2017, 10:01   #6
 
Bombasticx3's Avatar
 
elite*gold: 0
The Black Market: 173/1/0
Join Date: Oct 2011
Posts: 4,607
Received Thanks: 674
Quote:
Originally Posted by warfley View Post
Solange es simpel bleibt kannst du
Code:
QApplication::processEvents()
verwenden, das unterbricht kurz und feuert alle events die sich bis dahin in der Queue befinden. Wenn du das in der Schleife aufrufst können dann währenddessen der Code aus z.B. deinem Abbrechen button ausgeführt werden, und nachdem alle events abgearbeitet sind returned die Funktion wieder und deine schleife geht weiter.

Natürlich musst du dabei aufpassen, und niemals zu viel /blockierenden code in den Events ausführen. Aber gleichzeitig vermeidest du die Probleme mit multithreading die wirklich beschissen zu finden und zu Debuggen sind
Hab es mit CreateThread() gelöst.
Mit deiner Methode, hätte es nicht ganz funktioniert.
Bombasticx3 is offline  
Old 03/12/2017, 23:14   #7
 
elite*gold: 8
Join Date: Sep 2014
Posts: 625
Received Thanks: 177
Benutze lieber std::thread oder QThread u.ä.
qqdev is offline  
Old 04/16/2017, 01:27   #8
 
Cøre's Avatar
 
elite*gold: 0
Join Date: Feb 2016
Posts: 94
Received Thanks: 22
Add mich mal in Skype: zenox.cod kann dir weiter helfen. Arbeite seit langem mit Qt
Cøre is offline  
Old 04/18/2017, 11:07   #9
dotCom
 
Devsome's Avatar
 
elite*gold: 12400
The Black Market: 104/0/0
Join Date: Mar 2009
Posts: 15,875
Received Thanks: 4,381
Quote:
Originally Posted by Cøre View Post
Add mich mal in Skype: zenox.cod kann dir weiter helfen. Arbeite seit langem mit Qt
Hättest du die antworten gelesen, hättest du gesehen das er es gelöst hat. Warum in Skype adden wenn wir eh schon in einem Forum sind.
Devsome is offline  
Old 04/19/2017, 21:25   #10
 
elite*gold: 0
Join Date: Dec 2014
Posts: 442
Received Thanks: 211
auch wenn er das problem nicht gelöst hätte, solltest du trotzdem deine hilfestellung/lösung hier im thread posten und nicht privat.
außerdem würde ich mir lieber die offizielle durchlesen.
_asm is offline  
Thanks
1 User
Old 04/22/2017, 01:58   #11
 
elite*gold: 0
Join Date: Apr 2017
Posts: 2
Received Thanks: 1
Quote:
Originally Posted by qqdev View Post
Benutze lieber std::thread oder QThread u.ä.
QThread wrapt std::thread sowieso
generell wrappen diese "standard" klassen die STL
bis auf die GUI libs sind die qt klassen auch ziemlich unnötig
Remix v311 is offline  
Old 04/22/2017, 17:52   #12
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Quote:
Originally Posted by Remix v311 View Post
QThread wrapt std::thread sowieso
generell wrappen diese "standard" klassen die STL
bis auf die GUI libs sind die qt klassen auch ziemlich unnötig
Herzlichen Glückwunsch, du hast es erkannt! Eine library die 1995 geschrieben wurde und wahrscheinlich seit dem support für threads hat wrappt offensichtlich etwas was 2011 offiziell zum c++ standard hinzugekommen ist.

Ein weiteres Indiz für deine super Vermutung ist natürlich, dass überall in dem source code von der thread klasse von qt man nur sachen von std::thread liest, und nicht etwa eigene implementierungen wie , die pthread nutzt, oder die beginthread nutzt. Wie man sieht, überall nur std::thread! Ich finde es super wie du so gut informierte Beiträge abgibst, weiter so!
th0rex is offline  
Thanks
8 Users
Old 04/23/2017, 13:26   #13
 
elite*gold: 0
Join Date: Apr 2017
Posts: 1
Received Thanks: 0
Quote:
Originally Posted by C0untLizzi View Post
Herzlichen Glückwunsch, du hast es erkannt! Eine library die 1995 geschrieben wurde und wahrscheinlich seit dem support für threads hat wrappt offensichtlich etwas was 2011 offiziell zum c++ standard hinzugekommen ist.

Ein weiteres Indiz für deine super Vermutung ist natürlich, dass überall in dem source code von der thread klasse von qt man nur sachen von std::thread liest, und nicht etwa eigene implementierungen wie , die pthread nutzt, oder die beginthread nutzt. Wie man sieht, überall nur std::thread! Ich finde es super wie du so gut informierte Beiträge abgibst, weiter so!
ok mein fehler
bin davon ausgegangen dass es so ist, weil es bei vielen klassen und funktionen so ist
hätte es vorher überprüfen sollen
wie auch immer, habe kein problem damit fehler einzugestehen
Remix v314 is offline  
Old 04/23/2017, 14:33   #14
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Kannst du mal klassen oder funktionen nennen bei denen sie nur sachen ausm standard wrappen ? Habe bis jetzt nur bei atomics was gefunden wo deren code nicht mehr tut als das im standard und sie auch den standard nutzen.
th0rex is offline  
Reply


Similar Threads Similar Threads
Multithreading?
07/10/2014 - .NET Languages - 6 Replies
Hey Leute. Ich möchte in VB.NET einen Bot für eine Chatroulette-ähnliche Seite schreiben, sprich er soll mehrere Nachrichten in verschiedenen Zeitabständen in mehreren Webbrowsern senden. Das habe ich erstmal mit normalen Subs probiert, doch hier failt es schon bei den Zeitabständen, denn bei System.Threading.Thread.Sleep, stoppt ja dann das komplette Programm. Also will ich das jetzt mit Threads machen, allerdings habe ich bei meinem ersten Versuch den Fehler gekriegt, dass ich von einem...
[VB] Multithreading mit Sub
04/13/2013 - .NET Languages - 8 Replies
Hi, ich wollte mir ein Projekt mit Multithreading machen. Es funktioniert auch sonst alles gut bloß, wenn ich eine Funktion/Sub mit übergabewerten benutze kann ich ja beim Threadstart keine Werte übergeben. Wie mache ich das dann? Also ich lasse durch nen Timer den Thread starten weil ich umbeding nach einer bestimmten zeit ausführen möchte. MfG Ludder231
Multithreading
11/17/2012 - C/C++ - 8 Replies
Hi i have q how i create a multithread socket for this code ? #pragma comment(lib,"ws2_32.lib") #include <WinSock2.h> #include <iostream> #include <stdio.h> #include <tchar.h> #include <string> #include <sstream>
Multithreading
10/08/2012 - C/C++ - 25 Replies
Guten Tag Leute, Ich befasse mich seid ca 2 monaten immer mal wd mit c++ und probiere mich dran einfache Programme zu schreiben . Nun aber wollte ich mich mal am multithreading versuchen da ich eine Schleife programmieren will die solange läuft bis der Benutzer einen button drückt oder Bei der konsole per eingabe die schleife stoppt. Mir wurde gesagt ich soll eine globale Variable definieren was ich getan habe und dann die schleife in einen Threat packen soll .Mein Problem ist nun aber das...
Multithreading
03/17/2010 - AutoIt - 16 Replies
$handle = DllCallbackRegister("_Threadstart"," ;int","ptr") $handlr = DllCallbackRegister("_Threadstard"," ;int","ptr") $dll = DllStructCreate("Char;int") DllStructSetData($dll,1,"hi") DllStructSetData($dll,2,1234) $ret = DllCall("kernel32.dll","hwnd", "CreateThread","ptr",0,"d word",0,"long",DllCallbackGetPtr($h andle),"ptr",DllStructGetPtr($dll)," ;long",0,"int*",0)...



All times are GMT +2. The time now is 11:16.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.