Program Language/C & C++
[C++] async로 간단하게 thread 만들기
야곰야곰+책벌레
2022. 7. 8. 15:14
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
반응형