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, 2355 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Java
Java kompilieren (5)

Frage von Zockervogel zum Thema Java ...

Windows Server
Jnlp Endungen mit Java automatisch verknüpfen über GPO (10)

Frage von staybb zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Installation
Eine etwas (wirklich) speziellere Frage: Windows 10-Installation über (11)

Frage von DerFurrer zum Thema Windows Installation ...

Linux
gelöst Boot failed: not a bootable disk (10)

Frage von Fleckmen zum Thema Linux ...

Windows Server
Probleme mit Client Software Zugriff auf Windows Server 2012 (8)

Frage von it-kolli zum Thema Windows Server ...

Multimedia & Zubehör
gelöst Iphone 6 prob (8)

Frage von jensgebken zum Thema Multimedia & Zubehör ...