C++ 36

[C++] std::async. launch policy

C++11 ~ C++ 에서 비동기 작업을 하기 위해 만들어진 library. future을 include 하여 사용 가능하다. C++에서 비동기 작업을 수행하는 또다른 library인 thread와의 차이는 https://donot-simsim.tistory.com/35 [C++] std::async, std::thread (1) 둘 다 비동기 작업을 수행하기 위해 만드는 것은 동일. 다만 몇 가지의 차이는 있다. 쓰면서 가장 와닿았던 두 가지의 특성이 있는데, 1. std::thread는 그저 thread를 하나 만들 뿐이다. 그에 관한 관 donot-simsim.tistory.com https://donot-simsim.tistory.com/37 [C++] std::async, std::thread ..

C++/STL 2023.04.20

[C++] std::async, std::thread (2)

https://donot-simsim.tistory.com/35 [C++] std::async, std::thread (1) 둘 다 비동기 작업을 수행하기 위해 만드는 것은 동일. 다만 몇 가지의 차이는 있다. 쓰면서 가장 와닿았던 두 가지의 특성이 있는데, 1. std::thread는 그저 thread를 하나 만들 뿐이다. 그에 관한 관 donot-simsim.tistory.com 여기서 이어지는 두 번째. 2. std::thread는 해당 함수를 통해 값을 가져오는 건 좀 귀찮아서, 주로 watchdog 같은 곳에 사용하게 되더라. 반면 std::async는 만드는 순간 future object를 되돌려주기 때문에, 해당 함수에서 값을 얻어오는 대에 특화되어있다. 이번엔 두 번쨰. async 는 th..

C++/STL 2023.04.10

[C++] std::async, std::thread (1)

둘 다 비동기 작업을 수행하기 위해 만드는 것은 동일. 다만 몇 가지의 차이는 있다. 쓰면서 가장 와닿았던 두 가지의 특성이 있는데, 1. std::thread는 그저 thread를 하나 만들 뿐이다. 그에 관한 관리는 직접 해야한다. 반면에 std::async는 자체 thread pool을 가지고 있어 관리에 대해서는 좀 놓아도 상관없다. 2. std::thread는 해당 함수를 통해 값을 가져오는 건 좀 귀찮아서, 주로 watchdog 같은 곳에 사용하게 되더라. 반면 std::async는 만드는 순간 future object를 되돌려주기 때문에, 해당 함수에서 값을 얻어오는 대에 특화되어있다. 여기에선 첫 번째에 관해서만 확인해보자. #include #include void func() { std:..

C++/STL 2023.04.09

[C++17] std::filesystem::path

c++17 부터 추가된 filesystem 안에 있는 path. https://en.cppreference.com/w/cpp/filesystem/path 자세한 것들은 여기있고.. 기본적으로 사용하는 것들 따로 정리해 보았다. 먼저, std::filesystem:: ~~ 라고 쓰기 귀찮으니, 관례적으로 using fs = std::filesystem이라 정의해 두고 사용한다고 한다. #include #include namespace fs = std::filesystem; int main() { // 현재 파일 fs::path _path("./test.txt"); std::cout

C++/STL 2023.04.04

[C++] DLL로 class export / import - 2

https://donot-simsim.tistory.com/22 [C++] DLL로 class export / import - 1 -- 전체 코드 맨 하단에 첨부 당연하게도, 솔루션이 커지면 커질수록 하나의 프로젝트에서 모든 것을 다 할 수는 없다. 그러다 보니 외부 라이브러리를 가져다 쓰는 경우가 많은데, 항상 가져다 donot-simsim.tistory.com 저번에 만든 dll export class를 상속받아서 다른 일을 해 보자. 먼저 baseClass.cpp를 삭제해주고 baseClass.h를 조금 손 봐주자. #pragma once #include #include #include #ifdef _DLL_EXPORT #define CLS_TYPE __declspec (dllexport) #els..

C++/기타 2023.03.20

[C++] DLL로 class export / import - 1

-- 전체 코드 맨 하단에 첨부 당연하게도, 솔루션이 커지면 커질수록 하나의 프로젝트에서 모든 것을 다 할 수는 없다. 그러다 보니 외부 라이브러리를 가져다 쓰는 경우가 많은데, 항상 가져다 쓰기만 하고, 내가 직접 만든 적은 없어서 그런지 직접 만드려고 하니 상당히 고통스러웠다. 그래서 복습할 겸 정리. 먼저 dll 프로젝트를 만든다. 적당히.. baseclass라고 하나를 만들어보자. #pragma once #include #include #include class baseClass { public: std::string myname; void init(std::string name); int money(); }; #include "pch.h" #include "SomeBaseClass.h" void..

C++/기타 2023.03.16

[C++ Metaprogramming] enable_if / enable_if_t

C++11~ enable_if C++17~ enable_if_t 이건 사실 위의 enable_if 를 편히 쓸 수 있게 만들어 둔 것이다. enable_if:: type enable_if_t 위 두개는 같은 표현이다 (C++ 17에서는) 에 정의된 클래스 템플릿. 해당 템플릿을 통해 1. 특정한 상황일 때 불리는 overload 된 function을 만들 수 있거나, 2. 특정한 상황일 때 특정한 return type을 가지는 function을 만들 수 있다. enable_if 정의는 아래와 같이 정의되어있다. template struct enable_if {}; // no member "type" when !_Test template struct enable_if { // type is _Ty for ..

C++/기타 2023.03.07

[C++ String] string 나누기. string split

C++11 ~ 다른 여타 언어들과는 다르게, C++에서는 아직 string에서 바로 split을 할 수는 없다. 다만 몇 가지의 방법을 통해 split이 가능하다. #include #include #include using namespace std; vector splitStr(string orig, string deli){ vector res; // ??? return res; } int main(){ string longString(R"(split,this,string,how)"); auto&& SplitedStr = splitStr(longString, ","); for(const auto& str : SplitedStr){ cout

C++/기타 2023.03.04
반응형