728x90
반응형
class threadAsync
{
atomic_bool exitf_;
int count_;
string name_;
public:
threadAsync(string threadName) : exitf_(false), count_(0), name_(threadName)
{}
~threadAsync()
{
exitf_ = true;
}
bool OnThread(bool* run)
{
while (!exitf_)
{
if (*run)
{
printf("%s : %d\n", name_.c_str(), count_);
count_++;
this_thread::sleep_for(100ms);
}
else
{
this_thread::sleep_for(100ms);
this_thread::yield();
}
}
return 0;
}
};
vector<threadAsync*> g_threads;
int main()
{
g_threads.resize(2);
g_threads[0] = new threadAsync("Thread A");
g_threads[1] = new threadAsync("Thread B");
bool run = true;
future<bool> _futA = async(&threadAsync::OnThread, g_threads[0], &run);
future<bool> _futB = async(&threadAsync::OnThread, g_threads[1], &run);
return 0;
}
2개의 thread class를 선언한 뒤 두 개의 thread를 async로 만들어 thread를 구성한다. 간단한 예제이므로 async의 option에 대해서는 테스트하지 않는다.
728x90
반응형
'Program Language > C & C++' 카테고리의 다른 글
[C++] Dll Unloading 시 Kernel32.dll 에러 (0) | 2022.07.26 |
---|---|
[C++] 자료형 타입 확인하기 (0) | 2022.07.14 |
[C++] GetProcAddress가 nullptr을 Return 할 때, (0) | 2022.07.01 |
[C++] template를 이용하여 Bind 사용하기 (2) | 2022.05.25 |
[C++] unique_ptr 동적 할당 및 해제 하기 (0) | 2022.05.18 |