jeudi 6 avril 2017

How to start with threads in c++ (returns)

Hi I'm starting with threads in c++ in Windows.

#include <iostream>
#include <thread>
#include <windows.h>
using namespace std;
static const int num_threads = 2;

CRITICAL_SECTION critSection;
int thread1 ( int id ) {

    EnterCriticalSection ( &critSection );
    cout <<"thread1 had id:  " << id<<endl;
    LeaveCriticalSection ( &critSection );
    return 15;
}

void thread2() {
    EnterCriticalSection ( &critSection );
    cout << "Sleeping"<< endl;
    LeaveCriticalSection ( &critSection );
    Sleep ( 20 );
    EnterCriticalSection ( &critSection );
    cout << "No more"<< endl;
    LeaveCriticalSection ( &critSection );
}

int main() {
    thread t[num_threads];
    InitializeCriticalSection ( &critSection );

    t[0]=thread ( thread2);
    t[1] = thread ( thread1, 1 );
    EnterCriticalSection ( &critSection );
    LeaveCriticalSection ( &critSection );
    t[0].join();
    t[1].join();


    DeleteCriticalSection ( &critSection );
    return 0;
}

so my question is simple, how do I get return value from thread1, and second question is, is this correct way to do multithreading in C++?

Aucun commentaire:

Enregistrer un commentaire