(C++ STL) thread-sync (concurrency 기초1)

Posted by : at

Category : Cpp


#include <iostream>
#include <thread>
#include <string>
#include <mutex>
using namespace std;

mutex m;
int global = 0;

void f1()
{
    lock_guard<mutex> lg(m);
    // lock_guard는 mutex내에서 exception이 생길경우를 처리해준다.
    // unlock은 소멸자에서 자동으로 해준다.
    //m.lock();
    global = 100;
    global = global + 1;
    //m.unlock();
}

int main()
{
    thread t1(&f1);
    thread t2(&f1);

    t1.join();
    t2.join();
}
#include <iostream>
#include <thread>
#include <future>
using namespace std;

void f1(promise<int>& p)
{
    this_thread::sleep_for(3s);
    p.set_value(10);
}

int main()
{
    promise<int> p;
    future<int> ft = p.get_future();

    thread t(&f1, ref(p));
    cout << "wait value " << endl;
    cout << "value : " << ft.get() << endl; // set value까지 대기한다.

    t.join();
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links