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, 2349 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
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

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

Frage von staybb zum Thema Windows Server ...

Java
Problem bei Java und FTP (1)

Frage von Marlon1 zum Thema Java ...

Java
gelöst Palindrom-Untersuchung in Java (10)

Frage von Todybear zum Thema Java ...

Windows Installation
gelöst Java Switches für die .cmd (12)

Frage von Todybear zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...