Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Cpp Threads wie in Java

Frage Entwicklung C und C++

Mitglied: EinTyp

EinTyp (Level 1) - Jetzt verbinden

26.10.2012, aktualisiert 22:15 Uhr, 2377 Aufrufe, 3 Kommentare

Hallo Community,

mich würde es interessieren ob man das Threading-Modell von Java auf C++ übertragen kann.

Wie würde dieses Java-Programm in C++ aussehen:

01.
public class Threading { 
02.
    public static void main(String[] args) { 
03.
        System.out.println("start"); 
04.
        Thread t = new Thread(new Runnable() { 
05.
            public void run() { 
06.
                for (int i=0; i<10; ++i) { 
07.
                    System.out.println(i); 
08.
                    try { Thread.sleep(50); } catch (InterruptedException ex) { } 
09.
10.
11.
        }); 
12.
        t.start(); 
13.
        System.out.println("done."); 
14.
15.
}
Bei C++ ist das Problem, dass der Main-Thread angehalten wird bis die erstellten Threads abgearbeitet sind:

01.
#include <iostream> 
02.
#include <boost/thread.hpp> 
03.
 
04.
void run() { 
05.
    for (int i=0; i<10; ++i) { 
06.
        std::cout << i << std::endl; 
07.
        boost::this_thread::sleep(boost::posix_time::milliseconds(50)); 
08.
09.
10.
 
11.
int main(int argc, char** argv) { 
12.
    std::cout << "start" << std::endl; 
13.
 
14.
    boost::thread t(run); 
15.
    t.join(); 
16.
     
17.
    std::cout << "done" << std::endl; 
18.
     
19.
    return 0; 
20.
}
Ich hoffe ihr könnt mir hierbei helfen.

-EinTyp-
Mitglied: dog
27.10.2012 um 00:03 Uhr
Bei C++ ist das Problem, dass der Main-Thread angehalten wird bis die erstellten Threads abgearbeitet sind:

Öhm, ja.
Genau das steht in deinem Programm:

01.
t.join(); 
Effects:
If *this refers to a thread of execution, waits for that thread of execution to complete.
Bitte warten ..
Mitglied: EinTyp
11.11.2012 um 22:23 Uhr
Meine Frage war ja auch, ob das ganze so wie in Java möglich ist.
(Das mit einer Methode der Thread gestartet wird und der Main-Thread dabei weiterläuft)
Bitte warten ..
Mitglied: chfr77
10.12.2012 um 11:25 Uhr
Was heisst denn "wie in Java"? Java ist eine Emulator/Interpreter-Umgebung, die viel weniger Möglichkeiten bietet als nativer Code.

Wenn Du einen einzelnen Thread startest und wartest bis sich dieser mit dem Aufrufer vereinigt, hättest Du Deinen Code auch direkt im Aufruferkontext laufen lassen können.

Wenn Du mit "irgendeiner Threadingbibliothek" einen neuen Thread erzeugst, der dann in seiner eigenen Hauptfunktion läuft, ist dieser natürlich vom Aufruferthread abgekoppelt und hat einen eigenen Ausführungskontext (vom Betriebssystem) erhalten.
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Eigener Prozess ist schneller als Thread (13)

Frage von Aicher1998 zum Thema Visual Studio ...

Java
gelöst Was ist ein "Href" im Java ? (31)

Frage von rainergugus zum Thema Java ...

Linux Tools
Live-Linux mit Java? (3)

Frage von User1000 zum Thema Linux Tools ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Windows Server
Zertifikat am DC erneuern funktioniert nicht (12)

Frage von takvorian zum Thema Windows Server ...

Festplatten, SSD, Raid
Uninitialisierte Festplatte - Daten retten (11)

Frage von peterla zum Thema Festplatten, SSD, Raid ...