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, 2370 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
Verschlüsselung & Zertifikate
MD5-signierte Java-Anwendungen werden blockiert (IPMI etc.)

Tipp von C.R.S. zum Thema Verschlüsselung & Zertifikate ...

Windows Systemdateien
gelöst Aktuelle Java GUID Liste erhalten (10)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (44)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

Netzwerke
VPN-Server einrichten PPTPD-Einrichtung gescheitert (15)

Frage von MIlexx zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...