blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

c++でthreadを使う

1秒毎にhelloを出力する

code

 /* periodic.cpp */
#include <iostream>
#include <functional>
#include <chrono>
#include <thread>
using namespace std;
void periodic(function<void(void)> func,unsigned int intervalmils){
    thread([func, intervalmils](){
        while(true){
            func();
            this_thread::sleep_for(chrono::milliseconds(intervalmils));
        }
    }).detach();
}

int main(void){
    periodic([](){ cout << "hello" << endl; } , 1000);
    this_thread::sleep_for(chrono::minutes(1));
    return EXIT_SUCCESS;
}

compile

$ g++ -pthread -std=c++11 -o periodic periodic.cpp

exec

$ ./periodic

すると以下のように1分間だけ“hello”が1秒毎に出力されます。

hello
hello
hello
hello
hello
  :
  :