본문 바로가기

전체 글96

[C++] std::timed_mutex, std::recursive_mutex std::timed_mutex일반적인 std::mutex와 사용성은 완전 동일하지만, 맴버 함수의 차이가 있다. std::mutexstd::timed_mutexlockOOtry_lockOOunlockOOnative_handle(OS단의 핸들을 얻는 함수)OOtry_lock_forXOtry_lock_untilXO std::recursive_mutex하나의 스레드가 "여러번 뮤텍스 소유" 가능.소유한 횟수 만큼 unlock() 해야한다.어떤 경우에 사용할까?// std::recursive_mutex 사용 예시class rMutex {private: int shared_data = 0; std::recursive_mutex m; public: void f1() { m.lock();.. 2025. 2. 3.
[C++] std::jthread std::thread 사용시 - 반드시 join 또는 detach 해야한다. std::jthread - C++20 에서 추가된 새로운 스레드 클래스 -  - 소멸자에서 join을 해준다.#include #inlcude #include using namespace std::literals;void foo(int a, double b) { std::cout  jthread에서 stop token 예제#include #include #include using namespace std::literals;void foo() { for (int i = 0 ; i 2025. 1. 6.
[C++] std::async std::async- 주어진 함수를 비동기 (asynchronous)로 수행하는 함수 템플릿- 기존에 작성된 함수를 간단하게 스레드로 수행할 수 있다.- 일반적인 구현은 스레드 풀 사용- std::future 반환 1. std::async 기본 예제#include #include #include #include using namespace std::literals;int add(int a, int b) { std::this_thread::sleep_for(2s); return a+b;}int main() { std::future ft = std::async(add, 10, 20); std::cout - 위 예제에서 ft.get()을 호출하지 않아도 future의 소멸자에서 get()을 호출하여.. 2024. 12. 20.
[C++] std::packaged_task 멀티쓰레드를 고려하지 않은 일반 함수에 대해서 값을 꺼내오고 싶을때 사용std::packaged_task 예제#include #include #include int add(int a, int b){ std::cout task(add); std::future ft = task.get_future(); std::thread t(std::move(task), 10, 20); int ret = ft.get(); std::cout 2024. 12. 18.
[Git] git config 범위 Git config란?config는 configuration의 약자로 git의 환경설정을 하는 명령어이다. Git config의 설정범위 및 config 파일의 경로git config의 설정범위는 local, global, system이 있다.local은 저장소별 적용되는 범위이고,global은 사용자별(PC의 로그인) 적용되는 범위이고,system은 모든 사용자, 모든 저장소에 적용되는 범위이다. 범위 지정없이 git config 명령을 할 경우 default값은 local범위로 설정된다. git config의 설정파일의 경로는local의 설정파일 위치는 저장소안의 .git/config 이고,global의 설정파일 위치는 ~/.gitconfig 이고,system은 Linux = /etc/gitconfi.. 2024. 12. 12.
[C++] std::promise, std::future std::promise - 스레드 사이에서 "값 또는 예외를 공유" 할 수 있는 템플릿 - 헤더 - promise 통해서 전달된 데이터는 std::future를 통해서 얻을 수 있다. - set_value()는 한번만 사용할 수 있다. - future()는 한번만 꺼낼 수 있다.std::future 멤버 함수 - get() : 결과를 꺼내기. (한번만 사용 가능) - wait() : 결과값이 준비될 때까지 대기 - wait_for() : 주어진 시간 만큼 대기 - wait_until() : 주어진 시간까지 대기   -> wait_for/wait_until 함수의 반환값      - std::future_status::ready : 결과값이 준비 됨.      - std::future_status::ti.. 2024. 12. 4.